【问题标题】:Android 2.0 Best Method to Check Battery Level/Charging?Android 2.0 检查电池电量/充电的最佳方法?
【发布时间】:2012-01-24 15:12:35
【问题描述】:

好吧,让我先说我一直在四处寻找这个问题的答案。我试图弄清楚什么是最佳实践以及最适合电池寿命的方法。这是我的情况:

我希望我的应用程序在设备达到某个用户定义的电池电量时暂停其活动,而不必使用 Intent.ACTION_BATTERY_LOW 和 Intent.ACTION_BATTERY_OKAY。我在很多程序中都看到了这个选项,并希望在我的应用程序中模拟它。

我了解 Intent.ACTION_BATTERY_CHANGED 必须是已注册的事件。您不能只在清单中为 BroadcastReceiver 声明它以获取该接收器以获取 Intent。我知道如何编写如何获取电池电量/规模并查看设备是通过 USB 还是 AC 充电

我目前的思考过程给我带来了 2 个选择,但我不知道哪个是最好的选择,或者是否还有其他我不知道的选择?也许有人可以帮助我解决这些选项的优缺点来帮助我吗??

选项 1: 使用 AlarmManager 创建重复警报,基本上每隔一段时间轮询设备以检查电池电量。这样当我的警报触发时,它会为我的清单注册接收器发送一个自定义 Intent 以检查电池电量。
PRO 没有运行可能会被杀死或耗尽电池寿命的后台服务。
CONs 无法实时检测设备从充电源插入/拔出,并且必须依靠下一次触发的警报来检测变化。

选项 2: 创建一个服务,为 Intent.ACTION_BATTERY_CHANGED 注册一个接收器,这样它不仅可以在系统广播时获取电池电量,还可以实时检测充电的变化。
PRO实时检测电池寿命变化和充电方式变化。
CON 持续运行的服务可能会被终止
CON 会消耗处理时间和电池寿命以保持检测继续进行



电池电量:

Get battery level before broadcast receiver responds for Intent.ACTION_BATTERY_CHANGED

Intent batteryIntent = context.getApplicationContext().registerReceiver(null,
                    new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int rawlevel = batteryIntent.getIntExtra("level", -1);
double scale = batteryIntent.getIntExtra("scale", -1);
double level = -1;
if (rawlevel >= 0 && scale > 0) {
    level = rawlevel / scale;



插入/充电:

android USB connection charging signals

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;
}

}


提前感谢
-H

【问题讨论】:

    标签: android service broadcastreceiver battery


    【解决方案1】:

    这是我想出的解决方案

    我创建了一个警报来触发 X 秒数,我想我将它设置为 90,以发送自定义 Intent。然后我发现 android.intent.action.ACTION_POWER_CONNECTED 和 android.intent.action.ACTION_POWER_DISCONNECTED 允许我检查设备是否已插入。使用上述功能的组合,我能够检查我的电池电量以及设备是否正在充电,而无需使用已注册的接收器创建持续服务。我希望这至少对那里的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多