2021-02-25

Android5.0的自定义低电量警告

https://blog.csdn.net/huageshiya/article/details/48573757

应客户需求,在电量为10,7,5,2的时候,弹出低电量警告框,并且每次弹框,点一下确定就不再弹了。

/frameworks/base/packages/SystemUI/src/com/android/systemui/power/PowerUI.java里有个监听电池状态的广播,打log发现,每隔10秒,电池状态会报一次,具体修改如下
AlertDialog mBadWaringDialog = null;

//低电量警告框
private void showWarningLowBatteryAlert(int battery) {

dismissWarningLowBatteryDialog();
AlertDialog.Builder b = new AlertDialog.Builder(mContext);
b.setCancelable(true);
b.setMessage( mContext.getResources().getString(R.string.hct_battery_level) +
battery + mContext.getResources().getString(R.string.hct_charging_tip));
b.setIconAttribute(android.R.attr.alertDialogIcon);
b.setPositiveButton(android.R.string.ok, null);
//b.show();
AlertDialog d = b.create();
d.setOnDismissListener(new DialogInterface.OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
mBadWaringDialog = null;
}
});
d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
d.show();
mBadWaringDialog = d;
}

private final class Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {

            if(!plugged && mBatteryStatus != BatteryManager.BATTERY_STATUS_CHARGING && (oldBatteryLevel > mBatteryLevel)){

if(mBatteryLevel == 10){
showWarningLowBatteryAlert(10);
}else if(mBatteryLevel == 4){
showWarningLowBatteryAlert(4);
}else if(mBatteryLevel == 1){
showWarningLowBatteryAlert(1);
}else if(mBatteryLevel == 15){
showWarningLowBatteryAlert(15);
}
}

if(mBatteryStatus == BatteryManager.BATTERY_STATUS_CHARGING
|| mBatteryStatus == BatteryManager.BATTERY_STATUS_FULL){
dismissWarningLowBatteryDialog();
}
这里弹框的时候,一定要判断oldBatteryLevel > mBatteryLevel,因为每隔10秒都会接收到这个广播,为了保证每次低电量只弹一次,必须要在电池电量跳变的时候弹框,可能说的有点啰嗦,大家会理解的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值