如何从表盘查看 google 倒数计时器的剩余时间?

How can I access the remaining time on the google countdown timer from a watchface?

我正在构建表盘,想在计时器上显示剩余时间。

我一直在寻找访问(大概)"com.google.android.deskclock" 计时器数据的方法,但尚未在网上找到任何内容。

感谢您的帮助。

没有关于此的官方 API,但由于系统时钟应用程序通过复杂功能公开了此值,因此您可以通过这种方式访问​​它。

开始于 specifying the timer complication as a default:

setDefaultComplicationProvider(myComplicationId, 
    new ComponentName("com.google.android.deskclock", 
            "com.google.android.deskclock.complications.TimerProviderService"), 
    ComplicationData.TYPE_SHORT_TEXT);

如果您的表盘已经支持复杂功能,您可以将此提供程序输入该逻辑。否则 - 如果您想对计时器值做其他事情 - 您需要从 ComplicationData 中提取它。所以,在你的 WatchFaceService.Engine 子类中:

@Override
public void onComplicationDataUpdate(int complicationId, ComplicationData complicationData) {
    super.onComplicationDataUpdate(watchFaceComplicationId, data);

    if (complicationId == myComplicationId) {
        // This is the timer complication
        CharSequence timerValue = complicationData.getShortText()
                .getText(getBaseContext(), System.currentTimeMillis());
    }
}

这为您提供了当前 timerValue 来做任何您想做的事情。

对这种方法的一些注意事项:

  • 因为这不是 published system providers 之一,所以它总是有可能无法在某个地方的某些手表上运行 - 或者更新可能会破坏它。
  • 用户需要向您的应用授予 complication permission。如果您的脸上已经出现其他​​并发症,这可能不是问题,但如果这是可接受的用户体验,则由您决定。