Код уровня заряда батареи - как разместить в onCreate и onDraw - PullRequest
0 голосов
/ 30 января 2019

В поиске, чтобы показать уровень заряда батареи в Wear OS, я попробовал многие из методов, но мне все еще не хватает некоторых важных моментов, которые мешают мне решить мою проблему.

В одном из ответов( Получить уровень заряда батареи и состояние в Android ), я нашел следующий код:

public static float getBatteryLevel(Context context, Intent intent) {
Intent batteryStatus = context.registerReceiver(null,
        new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int batteryLevel = -1;
int batteryScale = 1;
if (batteryStatus != null) {
    batteryLevel = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, batteryLevel);
    batteryScale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, batteryScale);
}
return batteryLevel / (float) batteryScale * 100;}

По понятным причинам я не могу поместить его в метод onCreate(), так как он имеет возвратзаявление.Кроме того, я не должен помещать его в метод onDraw(), чтобы не перегружать его вычислениями.

Где именно я должен поместить этот код, чтобы он работал?

1 Ответ

0 голосов
/ 31 января 2019

Спасибо за предложение.После нескольких часов тестирования у меня появилась другая идея.Так что, если кто-то подойдет к той же самой проблеме, у меня работает решение ниже, так что стоит попробовать.Я поместил свой код в onCreateEngine () и сохранил результат в переменной, затем в методе onDraw (). Мне нужно использовать эту переменную только для представления уровня заряда батареи так, как мне нужно.

@Override
public Engine onCreateEngine() {

    //Battery

    getApplicationContext().registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context battContext, Intent battIntent) {
            batteryLevel = (int) (100 * battIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) / ((float) (battIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1))));
            calcBatteryAngle();
        }
    }, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

    //Battery

    return new Engine();
}

Такпока приведенный выше код работает для меня, если что-то изменится в ближайшие несколько дней, я буду обновлять этот пост.

...