很多应用在电量过低的情况下会出现问题,
特别是一些和硬件相关的应用,譬如相机,播放器等应用。
之前在碰到过在电量5%的情况下开闪光灯拍照拉低电压导致系统直接死机……
那么如何来解决这类问题呢?
其实在系统服务中当电量发生变化时,会发出广播 ACTION_BATTERY_CHANGED
在 App 中写一个广播接收器,并注册上,就可以接收到电量变化的消息了,当电量达到一定的值时,就可以采取措施,
譬如提示用户电量过低,将要退出应用等,
或者一些正在操作的任务,譬如正在玩游戏等,可以提示用户电量不足,保存相关信息等
正在进行录像的话,则可以直接停止并保存录相。
private final BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
int mBatteryLevel;
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
Log.d(TAG, "batteryReceiver ACTION_BATTERY_CHANGED");
int level = intent.getIntExtra("level", 0);
int scale = intent.getIntExtra("scale", 100);
synchronized (this) {
mBatteryLevel = level * 100 / scale;
}
Log.d(TAG, "mBatteryLevel = " + mBatteryLevel + " %");
Log.d(TAG, "mExitLowPower = " + mExitLowPower);
if (mBatteryLevel <= 4 && !mExitLowPower) {
showBatteryLowAndFinish();
Log.v(TAG,"low power mCameraState "+mCameraState);
if((mCameraState == STATE_RECORDING_IN_PROGRESS)
&& (mCameraActor instanceof VideoActor)){
Log.v(TAG,"batteryReceiver videoActor");
mCameraActor.stopActor();
}
exitCameraAwhileWhenLowPower();
} else if (mBatteryLevel > 4){
mExitLowPower = false;
}
}
}
};
这里判断当电量低于 4% 时,则直接退出应用并保存录像。其它应用跟据需要可以采取别的措施!