我有一个
ComplicationDataSourceService
需要在手表进入环境模式或屏幕关闭时收到通知。这个想法是,这是为了一种“手电筒”复杂性,打开时(通过点击)渲染完全白色的图像,关闭时不渲染任何内容。如果在屏幕关闭或进入环境模式时手电筒打开,我希望手电筒关闭。
在 Wear OS 5 之前,我使用
DisplayListener.onDisplayChanged
来完成此操作。然而,Wear OS 5 似乎根本没有调用这个方法,无论我的targetSdkVersion
是33
还是34
。
是否有另一种方法可以获取环境模式/屏幕关闭的回调,或者以不同的方式来实现
DisplayListener.onDisplayChanged
?
displayListener = object : DisplayManager.DisplayListener {
override fun onDisplayChanged(displayId: Int) {
val isStateAmbient = displayManager.getDisplay(displayId).state != Display.STATE_ON
// ...
}
}.also {
displayManager.registerDisplayListener(it, Handler(Looper.getMainLooper()))
}
您的要求是:
如果在屏幕关闭或进入微光模式时手电筒打开,我希望手电筒关闭。
这正是在安全图像中刻录的用例:
在容易烧屏的屏幕上,应避免在环境模式下出现实心色块。如果您的图标或图像包含实心色块,还请提供老化安全版本。
由于您要为“打开”的手电筒制作纯白色,因此您需要包含一个老化安全图像(例如,您的空图标),该图像将在环境模式下“自动”使用。这样,当您进入/退出环境模式时,您根本不需要监听,但系统会为您处理这个问题。这将允许您删除每个 API 级别上的 DisplayListener
并消除在 Wear 5 中使用它的需要。
ComplicationData.Builder#setIcon
提供图标时,请使用ComplicationData.Builder#setBurnInProtectionIcon
包含老化安全版本。当您使用
ComplicationData.Builder#setSmallImage
提供图像时,请使用ComplicationData.Builder#setBurnInProtectionSmallImage
包含老化安全版本。