Я создаю свой первый циферблат WearOS и слежу за документацией на сайте разработчиков Android. У меня часы работают и работают, и я реализовал сложности, но я хотел бы встраивать данные в сам корпус, а не использовать сложности.
Пока я просто хочу понять, как получитьтекущее значение активного таймера, работающего в приложении «Таймер», поэтому оставшаяся длительность снижается на циферблате (как это делает сложность с таймером).
Я нашел способ достичь этого, но могу »Я не могу заставить его работать. Я вырезал следующий код, чтобы показать только соответствующие строки:
@Override
public void onCreate(SurfaceHolder holder) {
super.onCreate(holder);
setDefaultComplicationProvider(RIGHT_COMPLICATION_ID,
new ComponentName("com.google.android.deskclock",
"com.google.android.deskclock.complications.TimerProviderService"),
ComplicationData.TYPE_SHORT_TEXT);
setActiveComplications(RIGHT_COMPLICATION_ID);
initialiseComplications();
}
@Override
public void onComplicationDataUpdate(
int complicationId, ComplicationData complicationData) {
mActiveComplicationDataSparseArray.put(complicationId, complicationData);
ComplicationDrawable complicationDrawable =
mComplicationDrawableSparseArray.get(complicationId);
complicationDrawable.setComplicationData(complicationData);
if (complicationId == RIGHT_COMPLICATION_ID) {
if(complicationData.getShortText() != null) {
mTimerValue = complicationData.getShortText().getText(getBaseContext(),
System.currentTimeMillis());
}
else{
// TEST
mTimerValue = "99";
}
}
invalidate();
}
@Override
public void onDraw(Canvas canvas, Rect bounds) {
canvas.drawText(String.valueOf(mTimerValue), mCenterX, 90, mTimePaint);
}
Приведенный выше код отображает значение таймера на циферблате, но только когда таймер установлен / отменен ине обновляет отсчет секунд. Это также требует, чтобы мое правильное усложнение было установлено как усложнение Таймера (я полагаю, что я могу установить это как провайдер по умолчанию для скрытого усложнения, но это все еще кажется немного грязным).
Мне удалось получитьуровень заряда батареи при регистрации приемника, и было бы замечательно, если бы я мог сделать что-то подобное для приложения Timer, но я не знаю, что искать, чтобы получить информацию о Timer:
@Override
public void onCreate(SurfaceHolder holder) {
super.onCreate(holder);
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context batteryContext, Intent batteryIntent) {
mBatteryLevel = (int) (100 * batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
/ ((float) (batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1))));
mCharging = (batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1) == 2);
}
}, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
Все ещедовольно плохо для этого, так что извините, если вышеупомянутое невероятно небрежно!