Как получить оставшуюся продолжительность заряда батареи во флаттере через канал метода, используя Kotlin или JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как получить оставшуюся продолжительность заряда батареи во флаттере через канал метода, используя Kotlin или Java

Сообщение Anonymous »

Я столкнулся с одной проблемой: мне нужно рассчитать оставшееся время работы от батареи устройства. Я пробовал несколько способов во Flutter, используя разные пакеты, такие как Battery_plus и Battery_info, но все получилось не так, как ожидалось. Позже я обнаружил, что это возможно через нативную часть, например Kotlin или Java.
Итак, во Flutter мы можем передавать Flutter Нативно через канал платформы, например канал метода. Поэтому, если у кого-то есть опыт работы с Kotlin или Java с Flutter, я хочу рассчитать оставшееся время работы от батареи.
Я получаю текущий уровень заряда батареи уровень через канал метода. Я хочу узнать оставшееся время работы от батареи.

Ожидаемый результат модели:
уровень заряда батареи: 50 %
Оставшееся время работы от батареи: 6 часов 38 минут.


Код Java< /strong>

Код: Выделить всё

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;

public class MainActivity extends FlutterActivity {
private static final String CHANNEL = "samples.flutter.dev/battery";

@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
super.configureFlutterEngine(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
// This method is invoked on the main thread.
if (call.method.equals("getBatteryLevel")) {
int batteryLevel = getBatteryLevel();

if (batteryLevel != -1) {
result.success(batteryLevel);
} else {
result.error("UNAVAILABLE", "Battery level not available.", null);
}
} else {
result.notImplemented();
}
}
);
}

private int getBatteryLevel() {
int batteryLevel = -1;
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
batteryLevel = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
} else {
Intent intent = new ContextWrapper(getApplicationContext()).
registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
batteryLevel = (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) /
intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
}

return batteryLevel;
}
}
Код Flutter[/b]

Код: Выделить всё

static const platform = MethodChannel('samples.flutter.dev/battery');
String _batteryLevel = 'Unknown battery level.';

Future _getBatteryLevel() async {
String batteryLevel;
try {
final result = await platform.invokeMethod('getBatteryLevel');
batteryLevel = 'Battery level at $result % .';
} on PlatformException catch (e) {
batteryLevel = "Failed to get battery level: '${e.message}'.";
}

setState(() {
_batteryLevel = batteryLevel;
});
}

//
@override
Widget build(BuildContext context) {
return Material(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
onPressed: _getBatteryLevel,
child: const Text('Get Battery Level'),
),
Text(_batteryLevel),
],
),
),
);
}
Это код для определения уровня заряда батареи. Поэтому я хочу получить оставшееся время работы от батареи в часах. Если кто-нибудь знает, как реализовать расчет на Java или Kotlin, для меня это было бы очень полезно.

Подробнее здесь: https://stackoverflow.com/questions/785 ... ing-kotlin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»