Да, вы можете отслеживать состояние батареи через намерения вещания.
Пример монитора батареи:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
public class ChargeMon extends BroadcastReceiver {
private boolean mCharging;
private boolean mUsb;
private boolean mAC;
public void start(Context c) {
c.registerReceiver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
public void stop(Context c) {
c.unregisterReceiver(this);
}
public boolean isCharging() {
return mCharging;
}
public boolean isUsb() {
return mUsb;
}
public boolean isAC() {
return mAC;
}
@Override
public void onReceive(Context context, Intent intent) {
if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,-1);
mCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
mUsb = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
mAC = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
}
}
}
Я вас спрашиваю, что это работает для зарядного устройства и USB-соединения В некоторых более высоких устройствах версии есть варианты для зарядки и USB, даже если, используя тот же порт?. –
См. Это из приведенного ниже ответа: 'подключен == BatteryManager.BATTERY_PLUGGED_AC || подключен == BatteryManager.BATTERY_PLUGGED_USB' - вы можете вернуть это в любом случае, есть отдельные флаги для зарядки USB и переменного тока. – g00dy