androidkotlinandroid-studiowatch-face-apiwatchface

How to approach resolving error in Logcat


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.


Solution

  • 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())