android 静态注册获取电量,获取手机电池百分比和电池容量方法
在智能手机的开发过程中,经常需要获取手机的电池信息。其实获取的方法很多,下面介绍下方法。
一:首先介绍获取电池容量。例如java反射方式获取。代码如下
package com.example.jamesfan.getbatterycapacity;
import android.content.Context;
public class BatteryInfo {
public String getCapaCity(Context context) {
Object mPowerProfile;
double mBatteryCapacity = 0;
String POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile";
try {
mPowerProfile = Class.forName(POWER_PROFILE_CLASS)
.getConstructor(Context.class)
.newInstance(context);
mBatteryCapacity = (double) Class.forName(POWER_PROFILE_CLASS)
.getMethod("getBatteryCapacity")
.invoke(mPowerProfile);
} catch (Exception e) {
e.printStackTrace();
}
return String.valueOf(mBatteryCapacity + " mAh");
}
如果是做项目,可以在如下默认文件中修改。一般第三方软件都是通过读取这里获取电池容量的。
文件路径:frameworks\base\core\res\res\xml\power_profile.xml
默认情况下是 1000 mAh,一般手机厂商会进行修改,便于第三方应用读取
1000item>
二:其次是通过广播方式接受电池信息。如下代码
package com.example.jamesfan.getbatterycapacity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
import android.util.Log;
import android.widget.Toast;
public class BatteryReceiver extends BroadcastReceiver {
int mCurrentLevel = 0;
int m_total = 0;
String m_strPercent;
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if(action.equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED))
{
Log.i("james-fan","get battery change broad");
}
// mCurrentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
//m_total = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
mCurrentLevel = intent.getExtras().getInt("level");// 获得当前电量
m_total = intent.getExtras().getInt("scale");// 获得总电量
int percent = mCurrentLevel * 100 / m_total;
m_strPercent =percent+ "%";
}
public int getCurrentLevel()
{
return mCurrentLevel;
}
public int getTotal()
{
return m_total;
}
public String getBatteryPercent()
{
return m_strPercent;
}
三:接下来是主函数,广播采用的是动态注册方式。也可以采用静态注册方法。
package com.example.jamesfan.getbatterycapacity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
BatteryReceiver m_receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
m_receiver = new BatteryReceiver();
registerReceiver(m_receiver, intentFilter);
Button showBatteryCapacity = (Button) findViewById(R.id.showBatteryCapacity);
Button showBatteryInfo = (Button) findViewById(R.id.showBatteryInfo);
//showBatteryCapacity.setOnClickListener(this);
showBatteryCapacity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BatteryInfo batteryInfo = new BatteryInfo();
String strBatteryInfo = batteryInfo.getCapaCity(MainActivity.this);
Toast.makeText(MainActivity.this, strBatteryInfo, Toast.LENGTH_SHORT).show();
}
});
showBatteryInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String str;
str = "CurrentLevel =" + m_receiver.getCurrentLevel()
+ " Total=" + m_receiver.getTotal()
+ " percent=" + m_receiver.getBatteryPercent();
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(m_receiver);
}
}
android 静态注册获取电量,获取手机电池百分比和电池容量方法相关推荐
- 获取手机电池百分比和电池容量方法
在智能手机的开发过程中,经常需要获取手机的电池信息.其实获取的方法很多,下面介绍下方法. 一:首先介绍获取电池容量.例如java反射方式获取.代码如下 package com.example.jame ...
- android 静态注册wifi广播,Android中BroadcastReceiver详解
BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...
- Android 通过代码执行shell命令获取电量百分比
shell 执行 adb shell dumpsys battery 命令,得到如下信息: 获取shell命令的返回值内容(以下 new ExeCommand().run("dumpsys ...
- android蓝牙查看电池容量_Android获取电池电量和电池容量
测试APK,获取电量信息,做一些耗电相关的测试,必须要用到一段时间内的耗电百分比,和当前手机的电池容量,计算出平均的耗电电流 1. 获取电池电量百分比 可以使用BatteryManager,废话不多说 ...
- ios 获取电量百分比_iOS 获取电池电量
由于项目需要,要求获取iOS手机电池电量的详细值以及变化量等信息.所以做了相关的技术调研,实现的方法有很多.所以写了这篇总结,对于当前获取电池电量的方式进行一个整理. 方法一:通过苹果给的api获取 ...
- android获取电池信息;android获取电池容量、技术、电压、电量、温度等信息
android获取电池信息:android获取电池容量.技术.电压.电量.温度等信息 1.这里我仅展示工具类,需要注意的是这里的部分值要刷新后才能显示,添加刷新UI的方法即可,而且电量温度等都是变化的 ...
- ios 获取电量百分比_怎么设置苹果11电池百分比(4 种方法,教你在 iPhone 11 上查看剩余电量百分比)...
在 iPhone 8 及以前的型号上,根据"设定 - 充电电池"选择项内开启"电池百分比"后,就可以在 iPhone 顶端状态栏即时显示信息剩下电量百分比,但自 ...
- 获取手机电池信息及电池剩余使用时间问题说明
1.获取电池信息 通过电池状态改变广播 private BroadcastReceiver mBatInfoReceiver=new BroadcastReceiver(){public void o ...
- 安卓逆向_15( 三 ) --- Android NDK 开发【 jni 静态注册、JNI_OnLoad 动态注册】
Android Studio开发JNI示例:https://blog.csdn.net/wzhseu/article/details/79683045 JNI_动态注册_静态注册.zip : http ...
最新文章
- 神经网络中的批量归一化Batch Normalization(BN)原理总结
- 激活函数sigmoid和激活函数softmax
- BZOJ1095 [ZJOI2007]Hide 捉迷藏 【动态点分治 + 堆】
- MspEmu W.I.P
- Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方式
- PMcaff-干货| 产品经理应该了解的服务设计那些事儿
- SAP S/4HANA Cloud SDK 入门介绍
- 问题:三元向量的比较
- Unity 基本操作
- C语言链表存储数据并排序,c语言求助:怎么根据链表中的某个数据对链表进行排序?...
- python绘制折线图保存_python如何画折线图
- Table边框使用总结
- linux下编译yacc命令,Lex/Yacc的学习——《编译原理及实践》附录B tiny编译器源码在linux下编译实现...
- 服务器数码管不显示,LED数码管不亮的原因及故障排查方法
- 2013年上半年 网络工程师试卷答案及详解
- python海龟动画小猫边走边换造型的类
- Golang中文字符串每个汉字的长度
- pythonlauncher是干什么用的_python launcher是什么
- 是时候适配 Swift 3 了吗——专访 LINE iOS 开发工程师王巍
- 做SEO优化的目的到底是什么