文档章节

Android 通过StickyBroadcast获取电量

IamOkay
 IamOkay
发布于 2015/02/01 11:10
字数 306
阅读 954
收藏 7

方案说明

网上众多例子都是使用广播监听电源,可以认为是“异步方案”,因为需要等待广播通知,事实上,有些数据会在广播之后进行持久化,也就是所谓的粘性广播,下面的代码咋一看并不需要StickyBroadcast,弹药说明的是,他的前期操作使用了StickyBroadcast将数据进行了持久化。

代码实现

逻辑不难,主要代码如下

/**
	 * 通过粘性广播检测电量
	 */
	private void checkBattery()
	{
		//通过粘性广播读取电量
		IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
		Intent intentBattery = registerReceiver(null, intentFilter);//注意,粘性广播不需要广播接收器
		if(intentBattery!=null)
		{
			//获取当前电量  
			int batteryLevel = intentBattery.getIntExtra("level", 0);  
		    //电量的总刻度  
		    int batterySum = intentBattery.getIntExtra("scale", 100);  
			float rotatio = 100*(float)batteryLevel/(float)batterySum;
			LogUtils.d("currentBattery="+rotatio+"%");
			if(rotatio<15)
			{
				getWindow().getDecorView().postDelayed(new Runnable() {
					@Override
					public void run() {
						showAlertToastTip(getString(R.string.common_low_batter));
					}
				}, 100);
			}
		}
	}
	/**
	 * 显示警告提示
	 * @param msg
	 */
	private void showAlertToastTip(String msg)
	{
		TextView msgTv = null;
		Toast toast = null;
		toast = new Toast(this);
		toast.setDuration(Toast.LENGTH_SHORT);
		toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);

		View toastView = LayoutInflater.from(this).inflate(
					R.layout.common_simple_toast_layout, null);
		msgTv = (TextView) toastView.findViewById(R.id.common_toast_text_tv);
		toastView.setTag(msgTv);
		toast.setView(toastView);
		msgTv.setText(msg);
		toast.show();
	}

 

android 4.4.2以上版本支持如下方式

BatteryManager batteryManager=(BatteryManager)getSystemService(BATTERY_SERVICE);
System.out.println(batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER));
System.out.println(batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE));
System.out.println(batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_NOW));

 

© 著作权归作者所有

IamOkay

IamOkay

粉丝 205
博文 483
码字总数 403228
作品 0
海淀
程序员
私信 提问
腾讯视频国际版(Android)电量测试方法研究与总结

本文由云+社区发表 作者:腾讯移动品质中心TMQ 1、研究背景: 在2017年Google I/O大会上,Google发布了Google Play管理中心的新功能:Android vitals。当app在大量设备上运行时,Android vit...

腾讯云加社区
03/18
0
0
《Android深入透析》之广播(Broadcast)

概述 在android中,Broadcast作为四大组件之一,被广泛的应用在android程序之间的数据传递。举一个大家都比较熟悉的例子来说明。在车上的时候大家都有收听广播的习惯,广播电台通过发送不同频...

朵朵和糖糖
2014/11/12
357
0
Android性能专项测试之耗电量统计

电量统计(1)-原理- http://duanqz.github.io/2015-07-21-batterystats-part1 Android性能专项测试之耗电量统计API- https://blog.csdn.net/itfootball/article/details/49155979 -- Android......

desaco
02/13
0
0
更强续航,尽在 Android 9 Pie

作者: Madan Ankapura, Android 产品经理 本文为 Android 电量管理系列连载的第一篇,希望开发者能从阅读过程中收获设备续航方面的战略洞见及实践指南。 电池性能和续航时间是很多用户关心的...

Android_开发者
2018/09/25
0
0
How to know your application’s battery stats

本文主要分享Android应用耗电量的统计分析方法和工具。 众所周知,Android系统内置了应用的耗电量统计分析功能,但是并没有提供相应的API和文档,只是可以查看耗电量排行榜前10的应用的耗电百...

SuShine
2018/08/01
39
0

没有更多内容

加载失败,请刷新页面

加载更多

对比ubuntu与centos系统 ​​​​

CentOS与Ubuntu该如何选择,哪个更好用。笔者在自媒体平台收集了一些网友的观点,较为经典,分享给大家。至于应该选择哪个,希望看完本文章后,读者心中有数。 观点1:CentOS适用于服务器,U...

老孟的Linux私房菜
今天
12
0
Java的基本类型

一、Java的基本类型 Java的基本类型有哪些? boolean char byte short int long float double ? 延伸思考 思考一:为什么有的书籍说Java存在第9种数据类型? 实际上,JAVA中还存在另外一种基...

yumoop
今天
14
0
OSChina 周四乱弹 —— 富婆小时候

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @猿敲月下码 :#今日歌曲推荐# 分享陈慧娴的单曲《夜机》 《夜机》- 陈慧娴 手机党少年们想听歌,请使劲儿戳(这里) @開源中國張學友 :早上...

小小编辑
今天
23
0
MyMinimad ── Linux下用libmad写的mp3解码播放程序(四)

优化了内存使用,不再使用mmap映射整个文件到内存 /* * 本程序是从 minimad 改进而来,如要更详细的说明请参看 minimad.c * * Gu Zhou, 2009/12/25, SiChuan University, China *...

代码强国
今天
18
0
Minikube安装

1、下载Minikube二进制文件 sudo curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 2、设置权限 sudo chmod +x minikube......

RogueQ
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部