Jos*_*osh 53 android batterymanager
我的应用程序有一个广播接收器来监听更改ACTION_POWER_CONNECTED
,并反过来标记屏幕保持.
我缺少的是应用程序在首次运行时检查充电状态的能力.谁能帮我用代码手动检查充电状态?
Gee*_*cko 146
感谢CommonsWare,这里是我写的代码.
public class Power {
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 || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
}
}
if (Power.isConnected(context)) {
...
}
Run Code Online (Sandbox Code Playgroud)
或Kotlin版本
object Power {
fun isConnected(context: Context): Boolean {
val intent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
val plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS
}
}
Run Code Online (Sandbox Code Playgroud)
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
wan*_*nam 29
public static boolean isPlugged(Context context) {
boolean isPlugged= false;
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
isPlugged = plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
if (VERSION.SDK_INT > VERSION_CODES.JELLY_BEAN) {
isPlugged = isPlugged || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
}
return isPlugged;
}
Run Code Online (Sandbox Code Playgroud)
支持无线充电的小更新.
Com*_*are 25
打电话registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED))
.这将返回一个Intent
已定义的额外内容,BatteryManager
以告知您是否已插入.
这是因为Intent.ACTION_BATTERY_CHANGED
是一个粘性广播.
在Android M +上,您可以BatteryManager
通过来使用该服务getSystemService(BATTERY_SERVICE)
。在运行pre-M的设备上,您可以使用其他人提到的即时广播。例:
public static boolean isCharging(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
BatteryManager batteryManager = (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE);
return batteryManager.isCharging();
} else {
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent intent = context.registerReceiver(null, filter);
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
if (status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
你的答案是在 android参考!
这是示例代码:
// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
// How are we charging?
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
Run Code Online (Sandbox Code Playgroud)
简单的方法是使用意图过滤器 ACTION_BATTERY_CHANGED
public void checkBatteryState(View sender) {
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = registerReceiver(null, filter);
int chargeState = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
String strState;
switch (chargeState) {
case BatteryManager.BATTERY_STATUS_CHARGING:
case BatteryManager.BATTERY_STATUS_FULL:
strState = "charging";
break;
default:
strState = "not charging";
}
TextView tv = (TextView) findViewById(R.id.textView);
tv.setText(strState);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36542 次 |
最近记录: |