Android - 电池状态
为了解决电池图标的问题,顺带看了看电池信息的获取方法 ;自己写了一个小栗子,来验证一下效果
电池的信息,一般都在BatteryManager里面,信息是用广播发出的。我们更新信息需要一个广播接收器
注册一个广播接收器,接收 Intent.ACTION_BATTERY_CHANGED ,从intent中读出想要的电池信息
比如 BatteryManager.EXTRA_STATUS BatteryManager.BATTERY_STATUS_CHARGING 等等
在Android 5.1中,电池信息可以在Settings - Battery 里面找到
package com.example.chargingwatching; import android.app.Activity; 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.view.WindowManager; import android.widget.TextView; public class MainActivity extends Activity { private TextView chargeStatus; private TextView LevelDigit; private TextView percentView; private int rustLevel = 0; /* battery level */ private int windowWidth = 0; private WindowManager mWindowManager; private BroadcastReceiver mBatteryStatuReceiver = new BroadcastReceiver() { int status; // current battery status int plugType; public void onReceive(Context context, Intent intent) { rustLevel = (int)(100f * intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100)); LevelDigit.setText(" " + rustLevel + "%"); percentView.setWidth((int)(windowWidth * rustLevel /100)); status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0); if(status == BatteryManager.BATTERY_STATUS_CHARGING) { if(plugType == BatteryManager.BATTERY_PLUGGED_AC) { chargeStatus.setText(R.string.ac_charging); } else if (plugType == BatteryManager.BATTERY_PLUGGED_USB) { chargeStatus.setText(R.string.usb_charging); } } else if (status == BatteryManager.BATTERY_STATUS_FULL) { if(plugType == BatteryManager.BATTERY_PLUGGED_AC) { chargeStatus.setText(R.string.full_ac); } else if (plugType == BatteryManager.BATTERY_PLUGGED_USB) { chargeStatus.setText(R.string.full_usb); } } else if(status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { chargeStatus.setText(R.string.uncharge); } else if(status == BatteryManager.BATTERY_STATUS_DISCHARGING) { chargeStatus.setText(R.string.discharging); } else { chargeStatus.setText(R.string.unknown); } } }; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.watch_charging); chargeStatus = (TextView)findViewById(R.id.tv_charge); LevelDigit = (TextView) findViewById(R.id.tv_battery_level_digit); percentView = (TextView) findViewById(R.id.percent_view); mWindowManager = this.getWindowManager(); windowWidth = mWindowManager.getDefaultDisplay().getWidth(); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(mBatteryStatuReceiver, filter); } }
以下是简单的布局文件
主体是LinearLayout,放一个TextView来显示电池状态,一个TextView来显示电量百分比
一个简陋的电量条,拿TextView来冒充的
<?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:orientation="vertical" > <TextView android:id="@+id/tv_charge" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Detecting..." android:textSize="20sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/tv_battery_level" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="@string/battery_level" android:textSize="20sp"/> <TextView android:id="@+id/tv_battery_level_digit" android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="20sp"/> </LinearLayout> <TextView android:id="@+id/percent_view" android:layout_height="20dp" android:layout_width="wrap_content" android:background="#00AA00" /> </LinearLayout>
Android - 电池状态的更多相关文章
- Android监听电池状态
监听电池状态只需要接收Intent.ACTION_BATTERY_CHANGED的广播即可,当电池状态发生变化时会发出广播. 1.运行状态如下图: (1)连接USB时的状态 (2)断开USB时的状态 ...
- android 获得电池状态
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- Android虚拟机电池状态设置
问题描述: 安装SDK后使用AVD配合APPIUM进行测试,此时虚拟机的电池状态为0%充电中:部分APP会对手机电池状态有要求,不符合要求时,无法安装或打开. 解决思路: 1.Android系统设置( ...
- 几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api
受到同事启发,突然发现了几个有趣又实用的web api,没想到前端还有这么多有趣的东西可以玩~~简直过分. 1.电池状态API navigator.getBattery():这个api返回的是一个pr ...
- android电池管理系统从上层的java到底层驱动的调用(转载)
1.概述 随着移动智能设备的快速发屏,电池的续航能力在很大情况下诱导了大众消费者的购买选择,android系统对电源管理的合理与否直接影响到电池的续航能力,而电池系统作为其中的一部分,主要用于对电池状 ...
- android电池信息简介
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 【转】android电池(五):电池 充电IC(PM2301)驱动分析篇
关键词:android 电池 电量计 PL2301任务初始化宏 power_supply 中断线程化 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 ...
- 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇
关键词:android 电池 电量计 MAX17040 任务初始化宏 power_supply 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台: ...
- 【转】android 电池(三):android电池系统
关键词:android电池系统电池系统架构 uevent power_supply驱动 平台信息: 内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV3 ...
随机推荐
- Java中的向上造型和向下造型等
package com.study.oop.day01; /** * 如果某个方法是静态 的,它的行为就不具有多态性 * @author LuHongGang * @date 2017年6月5日 ...
- mybatis在mysql和oracle批量插入不同
两者不同 1,批量插入 2,主键自增 3,分页不同 4,......待补充 批量插入 mysql: <insert id="batchinsertSelective" par ...
- 软件raid 5
软件raid 5的实现 RAID 5 是一种存储性能.数据安全和存储成本兼顾的存储解决方案. RAID 5可以理解为是RAID 0和RAID 1的折中方案.RAID 5可以为系统提供数据安全保障,但保 ...
- Activiti工作流几种驳回方式的实现与比较
最近公司做的一个项目要实现工作流程的收回,驳回等操作,而采用的工作流引擎并不支持驳回功能,这个项目恰好就我和一个实习生一块做,所以这个问题就落到我的头上来解决了... 客户提出的要求是驳回时要记录日志 ...
- JS/jQ常用宽高及应用
关于js的宽高,随便一搜就是一大堆.这个一大堆对我来说可不是什么好事,看的头都大了.所以今天就总结了一些比较会常用的,并说明一下应用场景. 先来扯一下documentElement和body的微妙关系 ...
- mysql字符编码设置
1.显示当前编码信息 mysql>show variables like '%character%' +--------------------------+------------------ ...
- EntityFramework Core迁移时出现数据库已存在对象问题解决方案
前言 刚开始接触EF Core时本着探索的精神去搞,搞着搞着发现出问题了,后来就一直没解决,觉得很是不爽,借着周末好好看看这块内容. EntityFramework Core迁移出现对象在数据库中已存 ...
- MongoDB--数据库管理
<strong>1.mongod 启动项注释(默认不能生成路径,需手动建立)</strong><br /><span style="white-sp ...
- 编译安装nginx却requires the PCRE library
编译安装nginx需要pcre包,未安装会有如下提示: ./configure: error: the HTTP rewrite module requires the PCRE library. Y ...
- python可视化--matplotlib
matplotlib在python中一般会与numpy同时出现,解决一些科学计算和数据的可视化问题. matplotlib其实就是matlib在python中的实现,因此不会有太大的难度,而由于pyt ...