Android电池信息获取
Android 可以通过BroadcastReceiver来获取电池信息改变的广播(ACTION_BATTERY_CHANGED),从而获取到相关的电池信息。
电池信息,及其对应的相关常数(参考网址:http://blog.sina.com.cn/s/blog_5d2e69770102vh59.html)
电池信息 | 类型 | 备注 |
status | int | 取得电池的状态,返回的状态类型由 android.os.BatteryManager 类定义的常量所决定,包括: |
电池充电状态( BATTERY_STATUS_CHARGING ) | ||
电池放电状态( BATTERY_STATUS_DISCHARGING ) | ||
电池满电状态( BATTERY_STATUS_FULL ) | ||
电池不充电状态( BATTERY_STATUS_NOT_CHARGING ) | ||
电池未知状态( BATTERY_STATUS_UNKNOWN ) | ||
health | int | 取得电池的健康状态,返回的状态类型由 android.os.BatteryManager 类定义的常量所决定,包括: |
电池损坏( BATTERY_HEALTH_DEAD ) | ||
电池健康( BATTERY_HEALTH_GOOD ) | ||
电池过热( BATTERY_HEALTH_OVERHEAT ) | ||
电池电压过大( BATTERY_HEALTH_OVER_VOLTAGE ) | ||
未知状态( BATTERY_HEALTH_UNKOWN ) | ||
未明示故障( BATTERY_HEALTH_UNSPECIFIED_FAILURE ) | ||
present | boolean | 判断当前是否存在电池 |
level | int | 取得电池的剩余容量 |
scale | int | 取得电池的总容量,通常为 100 |
Icon-small | int | 取得电池对应的图标 ID |
plugged | int | 连接的电源插座类型,返回的状态由 android.os.BatteryManager 类定义的常量所决定,包括: |
USB 电源( BATTERY_PLUGGED_USB ) | ||
交流电电源( BATTERY_PLUGGED_AC ) | ||
voltage | int | 取得电池的电压 |
temperature | int | 取得电池的温度,单位是摄氏度 |
technology | String | 取得电池的类型 |
获取电池信息的步骤:
(1) 创建BroadcastReceiver,用于结束电池信息变化的广播
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
//TO GET BatteryInfo
}
(2) 重写onResume()方法,获取IntentFilter对象,并注册BroadcastReceiver
protected void onResume() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mBroadcastReceiver, filter);
super.onResume();
}
(3)程序在后台的时候取消注册BroadcastReceiver
protected void onPause() {
unregisterReceiver(mBroadcastReceiver);
super.onPause();
}
实例:
public class GetBatteryInfo extends Activity {
private static final int REFRESH_TIME = 1;
private static boolean runtime=false;
private TextView mStatus_BatteryInfo;
private TextView mPlugged_BatteryInfo;
private TextView mLevel_BatteryInfo;
private TextView mScale_BatteryInfo;
private TextView mVoltage_BatteryInfo;
private TextView mTemperature_BatteryInfo;
private TextView mTechnology_BatteryInfo;
private TextView mHealth_BatteryInfo;
private TextView mRuntime_BatteryInfo;
private TimeThread timeThread; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitView();
} private void InitView() {
mStatus_BatteryInfo=(TextView)findViewById(R.id.status_BatteryInfo);
mPlugged_BatteryInfo=(TextView)findViewById(R.id.plugged_BatteryInfo);
mLevel_BatteryInfo=(TextView)findViewById(R.id.level_BatteryInfo);
mScale_BatteryInfo=(TextView)findViewById(R.id.scale_BatteryInfo);
mVoltage_BatteryInfo=(TextView)findViewById(R.id.voltage_BatteryInfo);
mTemperature_BatteryInfo=(TextView)findViewById(R.id.temperature_BatteryInfo);
mTechnology_BatteryInfo=(TextView)findViewById(R.id.technology_BatteryInfo);
mHealth_BatteryInfo=(TextView)findViewById(R.id.health_BatteryInfo);
mRuntime_BatteryInfo=(TextView)findViewById(R.id.runtime_BatteryInfo);
} @Override
protected void onResume() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mBroadcastReceiver, filter);
startTimeThread(timeThread);
super.onResume();
} @Override
protected void onPause() {
stopTimeThread(timeThread);
unregisterReceiver(mBroadcastReceiver);
super.onPause();
} /**
* @param milliseconds 将ms转化为hh:mm:ss 格式时间
* @return
*/
private String msToTime(int milliseconds ){
int allSeconds=(milliseconds/1000);
int hours=allSeconds/3600;
String hours_string;
int feelSeconds=allSeconds%3600;
int mimute=feelSeconds/60;
String mimute_string;
String second_string;
int second=feelSeconds%60;
if(hours<10){
hours_string="0"+String.valueOf(hours);
}else{
hours_string=String.valueOf(hours);
}
if(mimute<10){
mimute_string="0"+String.valueOf(mimute);
}else{
mimute_string=String.valueOf(mimute);
}
if(second<10){
second_string="0"+String.valueOf(second);
}else{
second_string=String.valueOf(second);
}
return hours_string+":"+mimute_string+":"+second_string;
} private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
int status = intent.getIntExtra("status", 0);
int health = intent.getIntExtra("health", 0);
int level = intent.getIntExtra("level", 0);
int scale = intent.getIntExtra("scale", 0);
int plugged = intent.getIntExtra("plugged", 0);
int voltage = intent.getIntExtra("voltage", 0);
int temperature = intent.getIntExtra("temperature", 0);
String technology = intent.getStringExtra("technology");
mLevel_BatteryInfo.setText(level+"");
mScale_BatteryInfo.setText(scale+"");
mVoltage_BatteryInfo.setText(voltage+"mV");
mTemperature_BatteryInfo.setText(((float)temperature/10)+"℃");
mTechnology_BatteryInfo.setText(technology+"");
mRuntime_BatteryInfo.setText(msToTime((int) SystemClock.elapsedRealtime()));
switch (status) {
case BatteryManager.BATTERY_STATUS_UNKNOWN:
mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_UNKNOWN));
break;
case BatteryManager.BATTERY_STATUS_CHARGING:
mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_CHARGING));
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_DISCHARGING));
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_NOT_CHARGING));
break;
case BatteryManager.BATTERY_STATUS_FULL:
mStatus_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_status_FULL));
break;
}
switch (health) {
case BatteryManager.BATTERY_HEALTH_UNKNOWN:
mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_UNKOWN));
break;
case BatteryManager.BATTERY_HEALTH_GOOD:
mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_GOOD));
break;
case BatteryManager.BATTERY_HEALTH_OVERHEAT:
mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_OVERHEAT));
break;
case BatteryManager.BATTERY_HEALTH_DEAD:
mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_DEAD));
break;
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_VOLTAGE));
break;
case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
mHealth_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_health_UNSPECIFIED_FAILURE));
break;
} switch (plugged) {
case BatteryManager.BATTERY_PLUGGED_AC:
mPlugged_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_plugged_AC));
break;
case BatteryManager.BATTERY_PLUGGED_USB:
mPlugged_BatteryInfo.setText(getResources().getString(R.string.BatteryInfo_plugged_USB));
break;
default:
mPlugged_BatteryInfo.setText("");
}
}
}
}; Handler TimeHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case REFRESH_TIME:
mRuntime_BatteryInfo.setText(msToTime((int) SystemClock.elapsedRealtime()));//获取系统启动时间
break;
default:
break;
} super.handleMessage(msg);
} }; /**
* 打开线程timeThread
* @param timeThread
* @param runtime 运行标志位
*/
private void startTimeThread(Thread timeThread){
if(timeThread==null){
runtime=true;
timeThread=new TimeThread();
timeThread.start();
}
} /**
* 停止线程
* @param timeThread
*/
private void stopTimeThread(Thread timeThread){
if(timeThread!=null){
Thread.currentThread().interrupt();
timeThread.interrupt();
runtime=false;
} } class TimeThread extends Thread{
@Override
public void run() {
while(runtime){
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message msg=new Message();
msg.what=REFRESH_TIME;
TimeHandler.sendMessage(msg);
}
} } }
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:clipToPadding="true"
android:fitsSystemWindows="true"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#5CD8AF"
android:gravity="center_vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:text="@string/SystemSetBatteryInfo_BatteryInfo_textvie"
android:textColor="@android:color/white"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_status_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/status_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_plugged_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/plugged_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_level_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/level_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_scale_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/scale_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_voltage_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/voltage_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_temperature_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/temperature_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_technology_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/technology_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_health_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/health_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="#FFFFFF"
android:gravity="center_vertical"
android:orientation="horizontal" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="@string/SystemSetBatteryInfo_runtime_textview"
android:textColor="@color/main_view_color"
android:textSize="18sp" /> <TextView
android:id="@+id/runtime_BatteryInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/main_view_color"
android:textSize="18sp" />
</LinearLayout> </LinearLayout>
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">GetBatteryInfo</string>
<string name="SystemSetBatteryInfo_BatteryInfo_textvie">电池信息</string>
<string name="SystemSetBatteryInfo_status_textview">电池状态:</string>
<string name="SystemSetBatteryInfo_plugged_textview">充电方式:</string>
<string name="SystemSetBatteryInfo_level_textview">电池电量:</string>
<string name="SystemSetBatteryInfo_scale_textview">电池容量:</string>
<string name="SystemSetBatteryInfo_voltage_textview">电池电压:</string>
<string name="SystemSetBatteryInfo_temperature_textview">电池温度:</string>
<string name="SystemSetBatteryInfo_technology_textview">电池类型:</string>
<string name="SystemSetBatteryInfo_health_textview">健康状态:</string>
<string name="SystemSetBatteryInfo_runtime_textview">使用时间:</string>
<string name="BatteryInfo_status_CHARGING">正在充电</string>
<string name="BatteryInfo_status_DISCHARGING">正在耗电</string>
<string name="BatteryInfo_status_FULL">电量充满</string>
<string name="BatteryInfo_status_NOT_CHARGING ">未充电</string>
<string name="BatteryInfo_status_UNKNOWN">状态未知</string>
<string name="BatteryInfo_plugged_USB">USB电源</string>
<string name="BatteryInfo_plugged_AC">交流电电源</string>
<string name="BatteryInfo_health_DEAD">电池损坏</string>
<string name="BatteryInfo_health_GOOD">电池正常</string>
<string name="BatteryInfo_health_OVERHEAT">电池过热</string>
<string name="BatteryInfo_health_VOLTAGE ">电池电压过大</string>
<string name="BatteryInfo_health_UNKOWN">未知状态</string>
<string name="BatteryInfo_health_UNSPECIFIED_FAILURE">未明示故障</string> </resources>
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_view_color">#1f1f1f</color>
<color name="main_text_color">#6f6f6f</color>
</resources>
Android电池信息获取的更多相关文章
- android电池信息简介
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- android WIFI信息获取
在androi中WIFI信息的获取能够通过系统提供的WIFI Service获取 [java] WifiManager wifi_service = (WifiManager)getSystemSe ...
- Android屏幕信息获取
Android中有时需要获取屏幕的size信息以便对控件位置进行动态控制,最近做了一些研究,现在将获取屏幕大小信息的方法总结如下,可能存在一些地方理解的不全面. 1.getMetrics Displa ...
- android sdcard信息获取
手机存储都有两种,一种是 手机自带的存储,称为internal storage,另外一种用户额外插入的存储,称为removable storage (也就是外置sdcard的部分). removabl ...
- android 手机信息获取
1. adb已安装 2. adb shell getprop 此时已列出所有相关信息
- Android 充电信息的获取【转】
本文转载自:https://blog.csdn.net/wateryi/article/details/50834821 在android系统中,电池信息是由BatteryService.java统一 ...
- Android 使用adb查看和修改电池信息
1.获取电池信息 $ adb shell dumpsys battery $ adb shell dumpsys battery Current Battery Service state: AC p ...
- 【风马一族_Android】Android 从命令行界面获取手机信息
Android 从命令行界面获取手机信息 1: cmd 打开命令行界面 2:adb devices 获取与电脑相连的设备,例如:模拟器.真机(手机) (右击“标记”,选择设备名称,点击“Ctrl+ ...
- Android设备网络、屏幕尺寸、SD卡、本地IP、存储空间等信息获取工具类
Android设备网络.屏幕尺寸.SD卡.本地IP.存储空间.服务.进程.应用包名等信息获取的整合工具类. package com.qiyu.ddb.util; import android.anno ...
随机推荐
- Python3 整数
imag定义:返回整数的复数形式的虚部(返回整数).格式:intobject.imag real定义:返回整数的复数形式的实部(返回整数).格式:intobject.real conjugate()定 ...
- pytorch tensor的索引与切片
切片方式与numpy是类似. * a[:2, :1, :, :], * 可以用-1索引. * ::2,表示所有数据,间隔为2,即 start:end:step. * a.index_select(1 ...
- python浅学【网络服务中间件】之RabbitMQ
一.关于AMQP: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议. AMQP使符合要求的客户端应用程序能够与符合要求的消息传递中间件代理进行通信. ...
- 第十八周java实验作业
实验十八 总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...
- 推荐 | 7个你最应该知道的机器学习相关github项目
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 磐石 目录: 介绍 Person Blocker(人体自动遮挡) ...
- adb基本命令操作(四)
一,基本操作命令 adb shell:进入手机系统 说明:root表示手机当前的操作用户,也是最高权限操作者 cd ,可以切换目录,执行cd /sdcard 表示手机内部的存储路径,也是表示内部存储 ...
- Springcloud 整合Hystrix 断路器,支持Feign客户端调用
1,在这篇博文中,已经大致说过了Springcloud服务保护框架 Hystrix在服务隔离,服务降级,以及服务熔断中的使用 https://www.cnblogs.com/pickKnow/p/11 ...
- [noip2016]组合数问题<dp+杨辉三角>
题目链接:https://vijos.org/p/2006 当时在考场上只想到了暴力的做法,现在自己看了以后还是没思路,最后看大佬说的杨辉三角才懂这题... 我自己总结了一下,我不能反应出杨辉三角的递 ...
- 【杂谈】SpringBoot为啥不用配置启动类
前言 在学习SparkJava.Vert.x等轻量级Web框架的时候,都遇到过打包问题,这两个框架打包的时候都需要添加额外的Maven配置,并指定启动类才能得到可执行的JAR包: 而springboo ...
- 马哥教育PYTHON相关基础 笔记
1 python 推荐书籍 <python Cookbook> <learn python the hard way> <google's python class> ...