Есть ли простой способ получить уведомление, когда к телефону Android подключено питание USB или переменного тока?
Как определить состояние питания?
Ответ 1
Настройте a BroadcastReceiver
для ACTION_BATTERY_CHANGED
. Опция Intent
дополнительно сообщит вам, что такое зарядное состояние - подробнее см. BatteryManager
.
Ответ 2
В AndroidManifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".receiver.PlugInControlReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
</application>
В коде
public class PlugInControlReceiver extends BroadcastReceiver {
public void onReceive(Context context , Intent intent) {
String action = intent.getAction();
if(action.equals(Intent.ACTION_POWER_CONNECTED)) {
// Do something when power connected
}
else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
// Do something when power disconnected
}
}
}
Ответ 3
другой способ - использовать диспетчер батарей. это я можно использовать для api >= 21
public class PowerUtil {
public static boolean isConnected(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
}
}
Ответ 4
Еще одна вещь, которую вы должны проверить, есть ли ошибки в манифесте --- > приложении. Если затем нажмите на поле с указанием ошибки и просто нажмите ссылку "Имя", Появится диалоговое окно для добавления класса. добавьте класс и в класс скопируйте код on on. Это код, который должен быть скопирован в файл класса, а не основной. благодаря Pzycoderz
Ответ 5
Вот еще один способ опроса информации:
читайте значения здесь: ex.
через оболочку Android:
cat /sys/class/power_supply/usb/online
1 = подключено, 0 = нет. Отражает состояние USB-соединения.
cat/sys/class/power_supply/ac/online
1 = подключено, 0 = нет. Отражает состояние подключения к сети.
Используя оба эти метода вместе, я думаю, что будет определять, получает ли устройство питание или нет. Не уверен, что место для всех устройств одинаково. Нашел местоположение так же, как и на Android 7+ и 5+, на планшете Samsung и устройстве RockChip.