检测 Wear OS 5 中的环境模式

问题描述 投票:0回答:1

我有一个

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()))
}
android kotlin wear-os android-wear-complication
1个回答
0
投票

您的要求是:

如果在屏幕关闭或进入微光模式时手电筒打开,我希望手电筒关闭。

这正是在安全图像中刻录的用例:

在容易烧屏的屏幕上,应避免在环境模式下出现实心色块。如果您的图标或图像包含实心色块,还请提供老化安全版本。

由于您要为“打开”的手电筒制作纯白色,因此您需要包含一个老化安全图像(例如,您的空图标),该图像将在环境模式下“自动”使用。这样,当您进入/退出环境模式时,您根本不需要监听,但系统会为您处理这个问题。这将允许您删除每个 API 级别上的 DisplayListener 并消除在 Wear 5 中使用它的需要。


当您使用

ComplicationData.Builder#setIcon

 提供图标时,请使用 
ComplicationData.Builder#setBurnInProtectionIcon
 包含老化安全版本。
当您使用

ComplicationData.Builder#setSmallImage

 提供图像时,请使用 
ComplicationData.Builder#setBurnInProtectionSmallImage
 包含老化安全版本。

© www.soinside.com 2019 - 2024. All rights reserved.