Android监听电池状态实例代码
作者:mrr 时间:2022-01-31 21:28:32
如果要监听电池的状态改变,需要动态注册:android.intent.action.BATTERY_CHANGED,收到Action后可以根据对应的Key获取你需要的信息,更详细信息可以参考以下例子中的BatteryChangedReceiver类
具体代码如下所示:
package com.example.charginganimation;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
private CustomClipLoading ccl;
private BatteryChangedReceiver receiver = new BatteryChangedReceiver();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerReceiver(receiver, getFilter());
}
private IntentFilter getFilter() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
filter.addAction(Intent.ACTION_BATTERY_LOW);
filter.addAction(Intent.ACTION_BATTERY_OKAY);
return filter;
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
unregisterReceiver(receiver);
super.onDestroy();
}
class BatteryChangedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
final String action = intent.getAction();
if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED)) {
System.out
.println("BatteryChangedReceiver BATTERY_CHANGED_ACTION---");
// 当前电池的电压
int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,
-1);
// 电池的健康状态
int health = intent
.getIntExtra(BatteryManager.EXTRA_HEALTH, -1);
switch (health) {
case BatteryManager.BATTERY_HEALTH_COLD:
System.out.println("BATTERY_HEALTH_COLD");
break;
case BatteryManager.BATTERY_HEALTH_DEAD:
System.out.println("BATTERY_HEALTH_DEAD ");
break;
case BatteryManager.BATTERY_HEALTH_GOOD:
System.out.println("BATTERY_HEALTH_GOOD");
break;
case BatteryManager.BATTERY_HEALTH_OVERHEAT:
System.out.println("BATTERY_HEALTH_OVERHEAT");
break;
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
System.out.println("BATTERY_HEALTH_COLD");
break;
case BatteryManager.BATTERY_HEALTH_UNKNOWN:
System.out.println("BATTERY_HEALTH_UNKNOWN");
break;
case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
System.out.println("BATTERY_HEALTH_UNSPECIFIED_FAILURE");
break;
default:
break;
}
// 电池当前的电量, 它介于0和 EXTRA_SCALE之间
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
// 电池电量的最大值
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
// 当前手机使用的是哪里的电源
int pluged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED,
-1);
switch (pluged) {
case BatteryManager.BATTERY_PLUGGED_AC:
// 电源是AC charger.[应该是指充电器]
System.out.println("BATTERY_PLUGGED_AC");
break;
case BatteryManager.BATTERY_PLUGGED_USB:
// 电源是USB port
System.out.println("BATTERY_PLUGGED_USB ");
break;
default:
break;
}
int status = intent
.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
switch (status) {
case BatteryManager.BATTERY_STATUS_CHARGING:
// 正在充电
System.out.println("BATTERY_STATUS_CHARGING ");
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
System.out.println("BATTERY_STATUS_DISCHARGING ");
break;
case BatteryManager.BATTERY_STATUS_FULL:
// 充满
System.out.println("BATTERY_STATUS_FULL ");
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
// 没有充电
System.out.println("BATTERY_STATUS_NOT_CHARGING ");
break;
case BatteryManager.BATTERY_STATUS_UNKNOWN:
// 未知状态
System.out.println("BATTERY_STATUS_UNKNOWN ");
break;
default:
break;
}
// 电池使用的技术。比如,对于锂电池是Li-ion
String technology = intent
.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
// 当前电池的温度
int temperature = intent.getIntExtra(
BatteryManager.EXTRA_TEMPERATURE, -1);
System.out.println("voltage = " + voltage + " technology = "
+ technology + " temperature = " + temperature
+ " level = " + level + " scale = " + scale);
} else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_LOW)) {
// 表示当前电池电量低
System.out
.println("BatteryChangedReceiver ACTION_BATTERY_LOW---");
} else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_OKAY)) {
// 表示当前电池已经从电量低恢复为正常
System.out
.println("BatteryChangedReceiver ACTION_BATTERY_OKAY---");
}
}
}
}
获取apk和版本信息
private int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
"com.example.charginganimation", 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return verCode;
}
private String getVerName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().getPackageInfo(
"com.example.charginganimation", 0).versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return verName;
}
以上代码内容是小编给大家介绍的android监听电池状态的实例代码,本文写的不好还请见谅,有好的意见欢迎给小编留言,我会及时给大家沟通的,谢谢大家一直以来对脚本之家网站的支持!
标签:android,监听,电池,状态
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#中判断某类型是否可以进行隐式类型转换
2023-03-28 15:29:36
Android实现蓝牙聊天功能
2023-06-10 01:19:48
![](https://img.aspxhome.com/file/2023/7/122077_0s.png)
C#实现动态执行字符串脚本(优化版)的示例代码
2022-06-10 19:13:54
Android监听Home键和Back键的区别介绍
2022-09-11 11:21:03
Java spring AOP基础
2022-08-10 12:39:25
详解SpringBoot如何实现统一后端返回格式
2022-11-27 05:26:24
Android Flutter实现有趣的页面滚动效果
2023-02-14 06:58:10
![](https://img.aspxhome.com/file/2023/1/138421_0s.gif)
Java代码实现酒店管理系统
2023-08-13 13:09:23
![](https://img.aspxhome.com/file/2023/5/58095_0s.jpg)
JAVA回顾:封装,继承,多态
2021-09-26 20:17:59
![](https://img.aspxhome.com/file/2023/7/67627_0s.png)
SpringBoot、mybatis返回树结构的数据实现
2022-05-12 18:56:08
![](https://img.aspxhome.com/file/2023/5/77365_0s.png)
探讨Android 的屏幕滚动操作不如 iPhone 流畅顺滑的原因
2023-04-05 09:05:33
nacos使用占位符${}进行参数配置的方法
2022-07-15 08:59:07
![](https://img.aspxhome.com/file/2023/4/63334_0s.png)
深入学习C#多线程
2021-06-12 12:35:04
![](https://img.aspxhome.com/file/2023/2/111102_0s.png)
C#使用ToUpper()与ToLower()方法将字符串进行大小写转换的方法
2023-06-27 05:51:45
详解StackExchange.Redis通用封装类分享
2022-07-06 00:41:32
![](https://img.aspxhome.com/file/2023/3/68643_0s.png)
详解Nacos配置中心的实现
2022-06-05 07:56:49
![](https://img.aspxhome.com/file/2023/6/83556_0s.png)
浅谈Java中IO和NIO的本质和区别
2023-11-01 01:44:08
![](https://img.aspxhome.com/file/2023/4/86734_0s.jpg)
Android Zipalign工具优化Android APK应用
2021-09-15 13:16:27
![](https://img.aspxhome.com/file/2023/3/138063_0s.gif)
模拟打印机排队打印效果
2023-12-13 13:26:22
详解Struts2中json 相互引用死循环解决办法
2022-09-08 04:04:46