【发布时间】:2015-06-07 03:05:43
【问题描述】:
我需要知道(通过我的应用程序)Android 设备是否正在充电。有任何想法吗?谢谢
【问题讨论】:
我需要知道(通过我的应用程序)Android 设备是否正在充电。有任何想法吗?谢谢
【问题讨论】:
我发现的一件事是,如果您的手机电量为 100%,您将不会收到充电通知。有些人的意思是充电,有些人的意思是当它有外部电源时,不管它是否 100%。我将它们归为一个,如果任何条件为真,则返回真。
public static boolean isPhonePluggedIn(Context context){
boolean charging = false;
final Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int status = batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean batteryCharge = status==BatteryManager.BATTERY_STATUS_CHARGING;
int chargePlug = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
if (batteryCharge) charging=true;
if (usbCharge) charging=true;
if (acCharge) charging=true;
return charging;
}
【讨论】:
这是有效的代码:
Intent bat = loader.registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = bat.getIntExtra("level", 0);
int scale = bat.getIntExtra("scale", 100);
return level * 100 / scale;
【讨论】:
public static boolean isBatteryCharging(Context context){
// Check battery sticky broadcast
final Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return (batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1) == BatteryManager.BATTERY_STATUS_CHARGING);
}
【讨论】: