Я разрабатываю мобильное приложение, которое поддерживает экран включенным при запуске, и все вы знаете, что такое приложение разряжает аккумулятор.Поэтому я хотел оставить экран включенным только тогда, когда устройство подключено. Я нашел этот код в stackoverflow (спасибо всем вам).
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Context context = this;
Intent batteryStatus = context.registerReceiver(null, ifilter);
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
if (isCharging) {
if (usbCharge) {
tv1.setText("USB plugged in");
} else {
if (acCharge) {
tv1.setText("AC plugged in");
}
}
} else {
tv1.setText("Connect your charger");
}
}
Я поместил этот код в oncreate.Но проблема в том, что он показывает статус только один раз (при запуске приложения).Поэтому я поставил задачу таймера, чтобы повторить проверку следующим образом
t = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Context context = this;
Intent batteryStatus = context.registerReceiver(null, ifilter);
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
if (isCharging) {
if (usbCharge) {
tv1.setText("USB plugged in");
} else {
if (acCharge) {
tv1.setText("AC plugged in");
}
}
Но это не работает и выдает ошибку
Несоответствие типов: Невозможно выполнить преобразование из нового Runnable () {} в контекст
Я новичок, поэтому, пожалуйста, посмотрите, не могли бы вы помочь мне с некоторыми изменениями или даже с новым кодом.Заранее спасибо.Важное примечание: я работаю над Sketchware, который позволяет вам размещать коды только в MainActivity.xml или MainActivity.java, а другие функции, такие как manifest.xml, недоступны для редактирования.Пожалуйста, имейте это в виду при ответе.