1. 项目背景与需求分析
在移动应用开发中,监控设备状态是一个常见需求,特别是对于电池管理类应用。获取手机充电电流看似简单,但实际涉及多个系统层面的交互。Fragment作为Android UI的基本组成单元,非常适合封装这类功能模块。
为什么选择Fragment而不是Activity?Fragment具有更好的复用性和灵活性,可以轻松嵌入不同界面布局。对于需要持续监测的功能,Fragment的生命周期回调(如onResume/onPause)能更精确地控制资源占用。
2. 技术实现方案设计
2.1 系统权限配置
首先需要在AndroidManifest.xml中添加电池状态读取权限:
xml复制<uses-permission android:name="android.permission.BATTERY_STATS"/>
注意:从Android 9开始,BATTERY_STATS权限被限制为系统应用使用。对于普通应用,应改用BroadcastReceiver接收系统广播。
2.2 核心实现类结构
建议采用MVVM架构设计:
code复制- BatteryFragment
|- BatteryViewModel
|- BatteryRepository
ViewModel负责业务逻辑,Repository处理数据获取,Fragment专注UI展示。这种分层设计便于测试和维护。
3. 充电电流获取实现细节
3.1 广播接收器方式
最可靠的方式是通过IntentFilter注册电池状态变更广播:
kotlin复制private val batteryReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val currentNow = intent.getIntExtra(BatteryManager.EXTRA_CURRENT_NOW, 0)
val currentAvg = intent.getIntExtra(BatteryManager.EXTRA_CURRENT_AVERAG
