android 获得电池状态
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <Button
- android:id="@+id/btn_battery"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="获取电池的信息" />
- <TextView
- android:id="@+id/tv_battery"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- />
- </RelativeLayout>
- package com.example.yanlei.yl;
- 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.support.v7.app.AppCompatActivity;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.TextView;
- public class MainActivity extends AppCompatActivity {
- // 定义电池信息的按钮
- private Button btnBattery;
- // 定义显示电池信息的textview
- private TextView tvBattery;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // 得到布局中的所有对象
- findView();
- // 设置对象的监听器
- setListener();
- }
- private void findView() {
- // 得到布局中的所有对象
- btnBattery = (Button) findViewById(R.id.btn_battery);
- tvBattery = (TextView) findViewById(R.id.tv_battery);
- }
- // 设置对象的监听器
- private void setListener() {
- btnBattery.setOnClickListener(listener);
- }
- OnClickListener listener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- switch (v.getId()) {
- // 当前的音量
- case R.id.btn_battery:
- IntentFilter filter = new IntentFilter();
- filter.addAction(Intent.ACTION_BATTERY_CHANGED);
- registerReceiver(mBroadcastReceiver, filter);
- break;
- }
- }
- };
- // 声明广播接受者对象
- private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- // TODO Auto-generated method stub
- String action = intent.getAction();
- if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
- // 得到电池状态:
- // BatteryManager.BATTERY_STATUS_CHARGING:充电状态。
- // BatteryManager.BATTERY_STATUS_DISCHARGING:放电状态。
- // BatteryManager.BATTERY_STATUS_NOT_CHARGING:未充满。
- // BatteryManager.BATTERY_STATUS_FULL:充满电。
- // BatteryManager.BATTERY_STATUS_UNKNOWN:未知状态。
- int status = intent.getIntExtra("status", 0);
- // 得到健康状态:
- // BatteryManager.BATTERY_HEALTH_GOOD:状态良好。
- // BatteryManager.BATTERY_HEALTH_DEAD:电池没有电。
- // BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:电池电压过高。
- // BatteryManager.BATTERY_HEALTH_OVERHEAT:电池过热。
- // BatteryManager.BATTERY_HEALTH_UNKNOWN:未知状态。
- int health = intent.getIntExtra("health", 0);
- // boolean类型
- boolean present = intent.getBooleanExtra("present", false);
- // 得到电池剩余容量
- int level = intent.getIntExtra("level", 0);
- // 得到电池最大值。通常为100。
- int scale = intent.getIntExtra("scale", 0);
- // 得到图标ID
- int icon_small = intent.getIntExtra("icon-small", 0);
- // 充电方式: BatteryManager.BATTERY_PLUGGED_AC:AC充电。 BatteryManager.BATTERY_PLUGGED_USB:USB充电。
- int plugged = intent.getIntExtra("plugged", 0);
- // 得到电池的电压
- int voltage = intent.getIntExtra("voltage", 0);
- // 得到电池的温度,0.1度单位。例如 表示197的时候,意思为19.7度
- int temperature = intent.getIntExtra("temperature", 0);
- // 得到电池的类型
- String technology = intent.getStringExtra("technology");
- // 得到电池状态
- String statusString = "";
- // 根据状态id,得到状态字符串
- switch (status) {
- case BatteryManager.BATTERY_STATUS_UNKNOWN:
- statusString = "unknown";
- break;
- case BatteryManager.BATTERY_STATUS_CHARGING:
- statusString = "charging";
- break;
- case BatteryManager.BATTERY_STATUS_DISCHARGING:
- statusString = "discharging";
- break;
- case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
- statusString = "not charging";
- break;
- case BatteryManager.BATTERY_STATUS_FULL:
- statusString = "full";
- break;
- }
- //得到电池的寿命状态
- String healthString = "";
- //根据状态id,得到电池寿命
- switch (health) {
- case BatteryManager.BATTERY_HEALTH_UNKNOWN:
- healthString = "unknown";
- break;
- case BatteryManager.BATTERY_HEALTH_GOOD:
- healthString = "good";
- break;
- case BatteryManager.BATTERY_HEALTH_OVERHEAT:
- healthString = "overheat";
- break;
- case BatteryManager.BATTERY_HEALTH_DEAD:
- healthString = "dead";
- break;
- case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
- healthString = "voltage";
- break;
- case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
- healthString = "unspecified failure";
- break;
- }
- //得到充电模式
- String acString = "";
- //根据充电状态id,得到充电模式
- switch (plugged) {
- case BatteryManager.BATTERY_PLUGGED_AC:
- acString = "plugged ac";
- break;
- case BatteryManager.BATTERY_PLUGGED_USB:
- acString = "plugged usb";
- break;
- }
- //显示电池信息
- tvBattery.setText("电池的状态:" + statusString
- + "\n健康值: "+ healthString
- + "\n电池剩余容量: " + level
- + "\n电池的最大值:" + scale
- + "\n小图标:" + icon_small
- + "\n充电方式:" + plugged
- + "\n充电方式: " + acString
- + "\n电池的电压:" + voltage
- + "\n电池的温度:" + (float) temperature * 0.1
- + "\n电池的类型:" + technology);
- }
- }
- };
- @Override
- protected void onPause() {
- super.onPause();
- // 解除注册监听
- unregisterReceiver(mBroadcastReceiver);
- }
- }
android 获得电池状态的更多相关文章
- Android虚拟机电池状态设置
问题描述: 安装SDK后使用AVD配合APPIUM进行测试,此时虚拟机的电池状态为0%充电中:部分APP会对手机电池状态有要求,不符合要求时,无法安装或打开. 解决思路: 1.Android系统设置( ...
- Android - 电池状态
为了解决电池图标的问题,顺带看了看电池信息的获取方法 :自己写了一个小栗子,来验证一下效果 电池的信息,一般都在BatteryManager里面,信息是用广播发出的.我们更新信息需要一个广播接收器 注 ...
- Android监听电池状态
监听电池状态只需要接收Intent.ACTION_BATTERY_CHANGED的广播即可,当电池状态发生变化时会发出广播. 1.运行状态如下图: (1)连接USB时的状态 (2)断开USB时的状态 ...
- 几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api
受到同事启发,突然发现了几个有趣又实用的web api,没想到前端还有这么多有趣的东西可以玩~~简直过分. 1.电池状态API navigator.getBattery():这个api返回的是一个pr ...
- Android Healthd电池服务分析
healthd healthd是安卓4.4之后提出来的,监听来自kernel的电池事件,并向上传递电池数据给framework层的BatteryService.BatteryService计算电池电量 ...
- 与众不同 windows phone (47) - 8.0 其它: 锁屏信息和锁屏背景, 电池状态, 多分辨率, 商店, 内置协议, 快速恢复
[源码下载] 与众不同 windows phone (47) - 8.0 其它: 锁屏信息和锁屏背景, 电池状态, 多分辨率, 商店, 内置协议, 快速恢复 作者:webabcd 介绍与众不同 win ...
- Android 监控网络状态
public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (Conn ...
- IOS 特定于设备的开发:检查设备接近度和电池状态
UIDevice类提供了一些API,使你能够跟踪设备的特征,包括电池的状态和接近度传感器.他们二者都以通知的形式提供更新,可以订阅他们,以便在有重要的更新时通知你的应用程序. 1>启动和禁用接近 ...
- Android 锁屏状态/锁屏密码等相关
Android 锁屏状态/锁屏密码等相关 开始是在设备管理器方面找方法,但一直不行,可能在公司系统组同事的帮助下,知道KeyguardManager这个类 /** * 当前系统锁屏是否有密码 * @p ...
随机推荐
- Re:从零开始的Linux之路(杂谈)
决定认真从零开始写一个Linux的学习过程,像我这么偷懒的人能写文字记录已经很不容易了,希望不要半途而废吧(拖走) 用多了Linux其实发现,要是哪天Linux和Windows能结合下就好了,简单粗暴 ...
- django第四天(路由别名,django2.x新特性和自定义转换器)
django第四天 路由别名 1.路由别名: 给路由路径命名一个名字 url(r'^login/$',views.login,name = 'login') 2.为什么要用路由别名 ①当路由路径过长时 ...
- 零基础学Python不迷茫——基本学习路线及教程!
什么是Python? 在过去的2018年里,Python成功的证明了它自己有多火,它那“简洁”与明了的语言成功的吸引了大批程序员与大数据应用这的注意,的确,它的实用性的确是配的上它的热度. Pyt ...
- Bin Paking Problem:简单的构造性算法
*本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 目录 BL和BLF算法 BF算法 HR算法 PH算法
- bash文件名统配
bash基础特性之globbing,即文件名通配: 文件名通配:使用元字符匹配字符 *:匹配任意长度的任意字符 假如文件名为paaaa,则pa*,*pa ...
- centos 安装 yum apt
以下地址 http://download.csdn.NET/detail/mimi00x/8081263 执行安装命令 rpm -i rpmforge-release-0.5.3-1.el7.rf.x ...
- 关于面试总结-app测试面试题
前言 现在面试个测试岗位,都是要求全能的,web.接口.app啥都要会测,那么APP测试一般需要哪些技能呢? 面试app测试岗位会被问到哪些问题,怎样让面试管觉得你对APP测试很精通的样子? 本篇总结 ...
- centos7中的网卡一致性命名规则、网卡重命名方法
一致性网络设备命名(Consistent Network Device Naming) 背景介绍: 在centos5的时候,我们习惯了eth0这样的网络设备命名,在centos6发现网络设备变成了em ...
- ubuntu 转换图片格式的方法(sam2p, imagemagick)
(1) 终端:sudo apt-get install sam2p sam2p [原图片名.格式] [目标图片名.格式] 即可在同一目录下生成目标图片格式 (2) 终端: sudo apt-get i ...
- Centos7 安装配置优化mysql(mariadb分支)
1.说明 由于在centos7的yum仓库中没有mysql,centos7用mariadb替代了mysql. mariadb是mysql源代码的一个分支, mysql被ORACLE闭源,而mariad ...