android获取电池电量(无延迟)
2015-05-09 16:10
435 查看
传统的注册BroadcatsReceiver监听Battery_changed有个缺陷,就是只有等到初始化和电量改变时,才能够收到通知,以下方法可以快速获得电量,直接拷贝的。
之前写过一个桌面电池小控件,记得获取电池信息使用BroadcastReceiver实现的,通常是在一个Service里面,动态注册一个BroadcastReceiver,用以监听电池的电量信息。有时候,仅需要一次性的获取电池电量信息,之前也是这么做的,也即这个监控电池电量的BroadcastReceiver在刚注册的时候,会立即获取一次电池的信息,但是感觉这样获取不大好,于是就又Google了一下,结果在StackOverFlow上找到了一个完美的获取电池电量的方法,虽然也是基于BroadcastReceiver,但是简单了不少。
用下面的代码就可以获取到携带电池信息的Intent了,相当于注册了一个空的BroadcastReceiver。
[java] view
plaincopy
Intent batteryInfoIntent = context.getApplicationContext()
.registerReceiver( null ,
new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) ) ;
当然,context.getApplicationContext()不是一定要这样写的,只要在能动态注册BroadcastReceiver的地方registerReceiver( null , new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) )就好。
接下来的信息的获取就简单了,各个字段的含义如果不明白请到Android Developers上看:
[java] view
plaincopy
int status = batteryInfoIntent.getIntExtra( "status" , 0 );
int health = batteryInfoIntent.getIntExtra( "health" , 1 );
boolean present = batteryInfoIntent.getBooleanExtra( "present" , false );
int level = batteryInfoIntent.getIntExtra( "level" , 0 );
int scale = batteryInfoIntent.getIntExtra( "scale" , 0 );
int plugged = batteryInfoIntent.getIntExtra( "plugged" , 0 );
int voltage = batteryInfoIntent.getIntExtra( "voltage" , 0 );
int temperature = batteryInfoIntent.getIntExtra( "temperature" , 0 ); // 温度的单位是10℃
String technology = batteryInfoIntent.getStringExtra( "technology" );
这样,想什么时候获取就什么时候获取,想获取几次就获取几次。
之前写过一个桌面电池小控件,记得获取电池信息使用BroadcastReceiver实现的,通常是在一个Service里面,动态注册一个BroadcastReceiver,用以监听电池的电量信息。有时候,仅需要一次性的获取电池电量信息,之前也是这么做的,也即这个监控电池电量的BroadcastReceiver在刚注册的时候,会立即获取一次电池的信息,但是感觉这样获取不大好,于是就又Google了一下,结果在StackOverFlow上找到了一个完美的获取电池电量的方法,虽然也是基于BroadcastReceiver,但是简单了不少。
用下面的代码就可以获取到携带电池信息的Intent了,相当于注册了一个空的BroadcastReceiver。
[java] view
plaincopy
Intent batteryInfoIntent = context.getApplicationContext()
.registerReceiver( null ,
new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) ) ;
当然,context.getApplicationContext()不是一定要这样写的,只要在能动态注册BroadcastReceiver的地方registerReceiver( null , new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) )就好。
接下来的信息的获取就简单了,各个字段的含义如果不明白请到Android Developers上看:
[java] view
plaincopy
int status = batteryInfoIntent.getIntExtra( "status" , 0 );
int health = batteryInfoIntent.getIntExtra( "health" , 1 );
boolean present = batteryInfoIntent.getBooleanExtra( "present" , false );
int level = batteryInfoIntent.getIntExtra( "level" , 0 );
int scale = batteryInfoIntent.getIntExtra( "scale" , 0 );
int plugged = batteryInfoIntent.getIntExtra( "plugged" , 0 );
int voltage = batteryInfoIntent.getIntExtra( "voltage" , 0 );
int temperature = batteryInfoIntent.getIntExtra( "temperature" , 0 ); // 温度的单位是10℃
String technology = batteryInfoIntent.getStringExtra( "technology" );
这样,想什么时候获取就什么时候获取,想获取几次就获取几次。
相关文章推荐
- android中获取电池当前电量
- Android获取手机电池电量用法实例
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- native层获取Android设备电池电量
- Android 获取电池电量
- Android 获取电池电量
- Android获取电池电量的三种方法
- Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态
- Android 获取设备电池电量
- Delphi XE5 android 获取电池电量
- Android中获取电池电量
- Android中获取电池电量
- Android学习之获取 电池电量 简单实例
- 获取Android设备电池电量状态
- unity3d 获取电量电池状态等 android and ios
- 获取Android设备电池电量状态
- Android应用开发获取手机电池电量的简单方法
- Android中获取电池电量
- android 获取充电状态 电池电量