在智能手机的开发过程中,经常需要获取手机的电池信息。其实获取的方法很多,下面介绍下方法。

一:首先介绍获取电池容量。例如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 静态注册获取电量,获取手机电池百分比和电池容量方法相关推荐

  1. 获取手机电池百分比和电池容量方法

    在智能手机的开发过程中,经常需要获取手机的电池信息.其实获取的方法很多,下面介绍下方法. 一:首先介绍获取电池容量.例如java反射方式获取.代码如下 package com.example.jame ...

  2. android 静态注册wifi广播,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  3. Android 通过代码执行shell命令获取电量百分比

    shell 执行 adb shell dumpsys battery 命令,得到如下信息: 获取shell命令的返回值内容(以下 new ExeCommand().run("dumpsys ...

  4. android蓝牙查看电池容量_Android获取电池电量和电池容量

    测试APK,获取电量信息,做一些耗电相关的测试,必须要用到一段时间内的耗电百分比,和当前手机的电池容量,计算出平均的耗电电流 1. 获取电池电量百分比 可以使用BatteryManager,废话不多说 ...

  5. ios 获取电量百分比_iOS 获取电池电量

    由于项目需要,要求获取iOS手机电池电量的详细值以及变化量等信息.所以做了相关的技术调研,实现的方法有很多.所以写了这篇总结,对于当前获取电池电量的方式进行一个整理. 方法一:通过苹果给的api获取 ...

  6. android获取电池信息;android获取电池容量、技术、电压、电量、温度等信息

    android获取电池信息:android获取电池容量.技术.电压.电量.温度等信息 1.这里我仅展示工具类,需要注意的是这里的部分值要刷新后才能显示,添加刷新UI的方法即可,而且电量温度等都是变化的 ...

  7. ios 获取电量百分比_怎么设置苹果11电池百分比(4 种方法,教你在 iPhone 11 上查看剩余电量百分比)...

    在 iPhone 8 及以前的型号上,根据"设定 - 充电电池"选择项内开启"电池百分比"后,就可以在 iPhone 顶端状态栏即时显示信息剩下电量百分比,但自 ...

  8. 获取手机电池信息及电池剩余使用时间问题说明

    1.获取电池信息 通过电池状态改变广播 private BroadcastReceiver mBatInfoReceiver=new BroadcastReceiver(){public void o ...

  9. 安卓逆向_15( 三 ) --- Android NDK 开发【 jni 静态注册、JNI_OnLoad 动态注册】

    Android Studio开发JNI示例:https://blog.csdn.net/wzhseu/article/details/79683045 JNI_动态注册_静态注册.zip : http ...

最新文章

  1. 神经网络中的批量归一化Batch Normalization(BN)原理总结
  2. 激活函数sigmoid和激活函数softmax
  3. BZOJ1095 [ZJOI2007]Hide 捉迷藏 【动态点分治 + 堆】
  4. MspEmu W.I.P
  5. Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方式
  6. PMcaff-干货| 产品经理应该了解的服务设计那些事儿
  7. SAP S/4HANA Cloud SDK 入门介绍
  8. 问题:三元向量的比较
  9. Unity 基本操作
  10. C语言链表存储数据并排序,c语言求助:怎么根据链表中的某个数据对链表进行排序?...
  11. python绘制折线图保存_python如何画折线图
  12. Table边框使用总结
  13. linux下编译yacc命令,Lex/Yacc的学习——《编译原理及实践》附录B tiny编译器源码在linux下编译实现...
  14. 服务器数码管不显示,LED数码管不亮的原因及故障排查方法
  15. 2013年上半年 网络工程师试卷答案及详解
  16. python海龟动画小猫边走边换造型的类
  17. Golang中文字符串每个汉字的长度
  18. pythonlauncher是干什么用的_python launcher是什么
  19. 是时候适配 Swift 3 了吗——专访 LINE iOS 开发工程师王巍
  20. 做SEO优化的目的到底是什么

热门文章

  1. Linux 锁机制(3)之自旋锁
  2. 10个 Istio 流量管理 最常用的例子,你知道几个?
  3. ADO/ADO.NET
  4. 短信验证码测试——短信轰炸之横向轰炸和纵向轰炸
  5. MATLAB(七)影像处理(1)
  6. kali liunx使用心得之命令行模式下如何配置连接无线网络
  7. raspberrypi三天玩能人脸识别
  8. 文件储存器 - IP通讯技术
  9. 任务管理器不显示gpu_Windows 10将在任务管理器中显示GPU温度
  10. 经常使用传感器协议1:CJ/T-188 水表协议解析1