Получить уровень заряда батареи подключенных умных часов

Можно ли получить уровень заряда батареи подключенных умных часов как часть Wear API? (Предпочтительно без необходимости развертывания фактического компонента износа на смарт-часах и последующего обмена данными между часами и устройством). Я видел несколько приложений для ношения, которые показывают уровень заряда батареи часов на самих часах, но я просто хотел бы узнать текущий уровень заряда батареи часов с помощью телефона.


person Nick    schedule 17.09.2014    source источник
comment
Я думаю, вам нужно пройти через API данных и микроприложение.   -  person rekire    schedule 18.09.2014


Ответы (2)


Вам, скорее всего, понадобится приложение для ношения, но оно должно быть очень простым.

На носимом устройстве сделайте WearableListenerService. Попросите приложение для телефона отправить сообщение (используя APi для сообщений). . Это запустит WearableListenerService на часах. Попросите часы получить информацию о батарее и отправить ее обратно на телефон с помощью другого сообщения.

person gatlingxyz    schedule 21.09.2014
comment
Спасибо за ваш ответ, я пошел по этому пути, и это работает хорошо. Не то, на что я надеялся (потому что это создает некоторую нагрузку на носимое устройство, пусть даже минимальное), но это работает :-)! - person Nick; 28.09.2014

Начните с определения текущего состояния заряда. BatteryManager транслирует все сведения об аккумуляторе и зарядке в фиксированном намерении, которое включает в себя состояние зарядки.

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

Вы можете извлечь текущий статус зарядки таким образом

// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                     status == BatteryManager.BATTERY_STATUS_FULL;

вы можете использовать этот

public static final String EXTRA_LEVEL
Added in API level 5
Extra for ACTION_BATTERY_CHANGED: integer field containing the current battery level, from 0 to      EXTRA_SCALE.

Constant Value: "level"

Вы можете найти текущий заряд батареи, извлекая текущий уровень заряда батареи и шкалу из намерения состояния батареи, как показано здесь:

int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

float batteryPct = level / (float)scale; // your %

поэтому batteryPct – это процент заряда батареи.

//тогда вы можете показать свой процент

Дополнительные сведения о BatteryManager можно найти здесь.

person Nadir Belhaj    schedule 21.09.2014
comment
Привет Надир, спасибо за подробный ответ. Обратите внимание, что вопрос заключался в том, как получить состояние батареи умных часов, подключенных к телефону, а не уровень заряда батареи телефона. Ваш ответ получает только уровень заряда батареи телефона. - person Nick; 21.09.2014