当设备正在充电且电池电量达到100%(或接近它,让我们说高于95%)时,我需要开始一项活动。应用程序正在打开或关闭。
当充电器插入并检查电池电量时,我可以触发广播接收器,但如果它不在我想要的范围内,则不会发生任何事情。但就我而言,这是我的意思。我不知道如何继续监控它,直到达到所需的电池水平而不在某个活动上运行任务。我需要在背景上发生这种情况。
答案 0 :(得分:0)
使用此方法检查设备是否正在充电
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;
}
使用此方法获取电池百分比
public static int getBatteryPercentage(Context context) {
IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, iFilter);
int level = batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) : -1;
int scale = batteryStatus != null ? batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1) : -1;
float batteryPct = level / (float) scale;
return (int) (batteryPct * 100);
}
然后检查
if(isCharging(getContext()) && getBatteryPercentage(getContext()) == 100){
//start your activity here
}
答案 1 :(得分:0)
您可以使用Firebase作业调度程序,在代码中可以指定一些约束,例如计费或网络状态。查看链接https://github.com/firebase/firebase-jobdispatcher-android#scheduling-a-more-complex-job