我正在表盘上显示剩余时间。
我一直在寻找访问(大概)"com.google.android.deskclock"以获取计时器数据的方法,但在网上没有找到任何东西。
谢谢你的帮助。
没有官方的 API,但由于系统 Clock 应用通过复杂功能公开此值,因此您可以通过这种方式访问它。
首先将计时器复杂性指定为默认值:
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
来执行任何您想做的事情。
这种方法有几个注意事项:
- 由于这不是已发布的系统提供商之一,因此它始终有可能无法在某处的某个手表上运行 - 或者更新可能会破坏它。
- 用户需要已向应用授予复杂功能权限。如果您的脸部已经出现其他并发症,这可能不是问题,但如果这是可接受的用户体验,则由您决定。