100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Android监控电池电量和充电状态

Android监控电池电量和充电状态

时间:2018-09-19 09:31:46

相关推荐

Android监控电池电量和充电状态

确定当前充电状态

首先,确定当前充电状态。BatteryManagerBatteryManagerBatteryManager会在一个包含充电状态的粘性Intent中广播所有电池和充电详情。

由于它是一个粘性 Intent,因此您并不需要如下一代码段中所示的那样通过简单地调用registerReceiver传入null作为接收器来注册BroadcastReceiverBroadcastReceiverBroadcastReceiver,便可返回当前电池状态 Intent。您可以在此处传入实际BroadcastReceiver对象,但由于稍后我们将会处理更新,因此并不需要这样做。

val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->context.registerReceiver(null, ifilter)}

您可以提取当前充电状态,并且如果设备正在充电,则还可以提取设备是通过 USB 还是交流充电器进行充电。

val status: Int = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1) ?: -1val isCharging: Boolean = status == BatteryManager.BATTERY_STATUS_CHARGING|| status == BatteryManager.BATTERY_STATUS_FULL// 如何充电?val chargePlug: Int = batteryStatus?.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) ?: -1val usbCharge: Boolean = chargePlug == BatteryManager.BATTERY_PLUGGED_USBval acCharge: Boolean = chargePlug == BatteryManager.BATTERY_PLUGGED_AC

监控充电状态变化

就像设备可以轻松地插入电源,充电状态也很容易发生变化,因此必须监控充电状态的变化并相应地改变刷新频率。

每当设备连接或断开电源时,BatteryManager都会广播一项操作。请务必接收这些事件,即便您的应用并未运行 - 尤其要考虑到这些事件可能会影响您启动应用以便发起后台更新的频率 - 因此您应在清单中注册一个BroadcastReceiver,通过在一个 Intent 过滤器内定义ACTION_POWER_CONNECTEDACTION_POWER_DISCONNECTED来同时监听这两种事件。

<receiver android:name=".PowerConnectionReceiver"><intent-filter><action android:name="android.intent.action.ACTION_POWER_CONNECTED"/><action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/></intent-filter></receiver>

确定当前电池电量

您可以通过从电池状态 intent 提取当前电池电量和刻度来了解当前电池电量,如下所示:

val batteryPct: Float? = batteryStatus?.let { intent ->val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)level * 100 / scale.toFloat()}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。