监听电池状态只需要接收Intent.ACTION_BATTERY_CHANGED的广播即可,当电池状态发生变化时会发出广播。
1.运行状态如下图:
充电中的状态
未充电时的状态
实现代码如下,各个状态通过名字就很容易知道意思,BatteryManager类中定义了电池状态。
public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private TextView mTvVoltage; private TextView mTvTemperature; private TextView mTvLevel; private TextView mTvStatus; private TextView mTvHealth; private TextView mTvTechnology; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvVoltage = (TextView)findViewById(R.id.tv_voltage); mTvTemperature = (TextView)findViewById(R.id.tv_temperature); mTvLevel = (TextView)findViewById(R.id.tv_level); mTvStatus = (TextView)findViewById(R.id.tv_status); mTvHealth = (TextView)findViewById(R.id.tv_health); mTvTechnology = (TextView)findViewById(R.id.tv_technology); this.registerReceiver(this.mBatteryReceiver, new IntentFilter( Intent.ACTION_BATTERY_CHANGED)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } private BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { int voltage=arg1.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); mTvVoltage.setText("电压:" + voltage / 1000 + "." + voltage % 1000 + "V"); int temperature=arg1.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0); mTvTemperature.setText("温度:" + temperature / 10 + "." + temperature % 10 + "℃"); if (temperature >= 300) { mTvTemperature.setTextColor(Color.RED); } else { mTvTemperature.setTextColor(Color.BLUE); } int level=arg1.getIntExtra(BatteryManager.EXTRA_LEVEL,0); int scale=arg1.getIntExtra(BatteryManager.EXTRA_SCALE,0); int levelPercent = (int)(((float)level / scale) * 100); mTvLevel.setText("电量:" + levelPercent + "%"); if (level <= 10) { mTvLevel.setTextColor(Color.RED); } else { mTvLevel.setTextColor(Color.BLUE); } int status = arg1.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); String strStatus = "未知状态";; switch (status) { case BatteryManager.BATTERY_STATUS_CHARGING: strStatus = "充电中……"; break; case BatteryManager.BATTERY_STATUS_DISCHARGING: strStatus = "放电中……"; break; case BatteryManager.BATTERY_STATUS_NOT_CHARGING: strStatus = "未充电"; break; case BatteryManager.BATTERY_STATUS_FULL: strStatus = "充电完成"; break; } mTvStatus.setText("状态:" + strStatus); int health = arg1.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); String strHealth = "未知 :(";; switch (status) { case BatteryManager.BATTERY_HEALTH_GOOD: strHealth = "好 :)"; break; case BatteryManager.BATTERY_HEALTH_OVERHEAT: strHealth = "过热!"; break; case BatteryManager.BATTERY_HEALTH_DEAD: // 未充电时就会显示此状态,这是什么鬼? strHealth = "良好"; break; case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: strHealth = "电压过高!"; break; case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: strHealth = "未知 :("; break; case BatteryManager.BATTERY_HEALTH_COLD: strHealth = "过冷!"; break; } mTvHealth.setText("健康状况:" + strHealth); String technology = arg1.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); mTvTechnology.setText("电池技术:" + technology); } }; }
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java 与 Office 结合是否适合报表生成?(java office 适合报表生成吗 )
- 如何有效提升 java corn 表达式的性能?(如何优化java corn表达式的性能 )
- PHP数据类型转换常见误区解析
- 如何在 Java 中高效地创建列表?(如何在Java中创建列表)
- Java中dubbo的最佳实践案例有哪些?(java中dubbo有哪些最佳实践案例)
- 如何通过 Java 代码获取当前时间戳?(如何使用Java获取当前时间戳)
- 如何使用 Java 编写一个 circular 类?(怎么用java编写一个circular类)
- 在 Java 中如何安全地进行 SQL 拼接?(Java中怎么安全的进行SQL拼接)
- Java 的 enum 有哪些需要注意的事项?(java的enum的注意事项)
- 深入解析:如何有效提升PHP数据类型的转换效率
猜你喜欢
AI推送时光机Android电池电量监听的示例代码
后端开发2023-05-30
Android监听电池状态实例代码
后端开发2022-06-06
Android来电监听和去电监听实现代码
后端开发2023-05-31
Android中获取电池电量实例代码
后端开发2022-06-06
android电话窃听器(示例代码)
后端开发2022-06-06
Android应用开发:电话监听和录音代码示例
后端开发2022-06-06
android实现来电静音示例(监听来电)
后端开发2022-06-06
android 电话状态监听(来电和去电)实现代码
后端开发2022-06-06
Android实现侦听电池状态显示、电量及充电动态显示的方法
后端开发2022-06-06
android短信监听工具(示例代码)
后端开发2022-06-06
Android中检查、监听电量和充电状态的方法
后端开发2022-06-06
Android编程实现对电池状态的监视功能示例
后端开发2022-06-06
Android实现显示电量的控件代码
后端开发2022-06-06
android电源信息查看(电量、温度、电压)实例代码
后端开发2022-06-06
android音乐播放器监听电话状态实现代码
后端开发2022-06-06
Android几行代码实现监听微信聊天示例
后端开发2022-06-06
android监听软键盘的弹出与隐藏的示例代码
后端开发2022-06-06
Android 实现监听的四种方法详解实例代码
后端开发2022-06-06
Qt实现电子时钟的示例代码
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧