I'm currently trying to wrap my head around developing WearOS watch faces for personal and company-internal use. I managed to adapt the WatchFaceKotlin example to an acceptable level for an analog watch face.
Now I'm trying to implement a digital watch face from scratch by following the Design watch faces pages on developer.android.com and scraping together missing parts from the example and wherever I can find. It's been tedious, but workable - until now.
I think I implemented a bare bones watch face just displaying hello world. It builds & runs in the emulator, but shows a black screen.
I'm getting the following error in Logcat (line breaks added):
2023-12-14 18:58:13.029
754-13241
WearServices
com.google.wear.services
E
[ProviderGetter]Fetched empty list of supported providers: supportedTypes = null, packageName = de.mycompany.digitalwatchface, watchFaceId = null
I'm not even sure this is the problem, but it is the only error, so...
I tried googling it every which way, but could not find anything helpful at all.
So, how do I find where this is coming from, and how to resolve it?
For completeness sake, here's the render function in my DigitalWatchFaceCanvasRenderer:
override fun render(
canvas: Canvas,
bounds: Rect,
zonedDateTime: ZonedDateTime,
sharedAssets: DigitalSharedAssets
) {
canvas.drawColor(0x550000)
val textPaint = Paint().apply {
isAntiAlias = true
textSize = 40f
color = 0xFFFFFF
typeface = Typeface.MONOSPACE
}
canvas.drawText("Hello WatchFace!", 20f, 250f, textPaint)
}
Everything else is implemented bare bones as per the guides & examples.
UPDATE: The error disappeared after removing the following line from the manifest:
<uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
However, I'm still getting an all black watch face. The draw functions are being called (confirmed by writing to logcat), but nothing is being drawn.
To answer my own question:
It was the wrong color format. Color Must include an Alpha Channel Value (for ARGB format), and also cast to an int, something like this:
canvas.drawColor(0xFF550000.toInt())