如何从表盘查看 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。如果您的脸上已经出现其他并发症,这可能不是问题,但如果这是可接受的用户体验,则由您决定。
我正在构建表盘,想在计时器上显示剩余时间。
我一直在寻找访问(大概)"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。如果您的脸上已经出现其他并发症,这可能不是问题,但如果这是可接受的用户体验,则由您决定。