如何从表盘访问Google倒数计时器上的剩余时间?

时间:2019-03-24 08:01:39

标签: timer wear-os

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

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

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

对此没有官方API,但是由于系统Clock应用程序通过复杂性公开了此值,因此您可以通过这种方式进行访问。

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。如果您的面孔已经显示出其他并发症,则可能不是问题,但是如果这是可以接受的用户体验,那就是您的电话。