Android查看电池电量的方法(基于BroadcastReceiver)

本文实例讲述了Android查看电池电量的方法。分享给大家供大家参考,具体如下:

程序如下:

import android.app.Activity; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; public class A02Activity extends Activity { private int level; private int scale; private Button b01; private BroadcastReceiver mBatInfoReceiver=new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action=intent.getAction(); //如果捕捉到的是ACTION_BATTERY_CHANGED就运行onBatteryInfoReceiver();将电量显示于新窗口中 if(Intent.ACTION_BATTERY_CHANGED.equals(action)){ level=intent.getIntExtra("level", 0); scale=intent.getIntExtra("scale", 100); onBatteryInfoReceiver(level,scale); } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b01=(Button)findViewById(R.id.button01); b01.setBackgroundColor(Color.GREEN); b01.setText("查看电量"); b01.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub registerReceiver(mBatInfoReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); } }); } public void onBatteryInfoReceiver(int intLevel,int intScale){ final Dialog d=new Dialog(A02Activity.this); d.setTitle(R.string.str_title); d.setContentView(R.layout.dialog); Window window=d.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); TextView mTextView02=(TextView)d.findViewById(R.id.myTextView02); //取得电池电量显示于Dialog中 mTextView02.setText(getResources().getText(R.string.str_body)+String.valueOf(intLevel*100/intScale)+"%"); Button b02=(Button)d.findViewById(R.id.button02); b02.setBackgroundColor(Color.RED); b02.setText("返回"); b02.setTextColor(Color.YELLOW); b02.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // 反注册Receiver并关闭窗口 unregisterReceiver(mBatInfoReceiver); d.dismiss(); } }); d.show(); } }

在Android中,Android.intent.BATTERY_CHANGED是系统的Broadcast Action Message,当电池处于充电状态或电池电量有变化时,系统便会广播此Action;程序中的BroadcastReceiver在注册时,由于设置了Intent Filter过滤此Action信息,因此当BroadcastReceiver一被注册,就能马上捕捉这个Action,进而取得电池电量。
主程序中的onReceiver()是当BroadcastReceiver被触发时会运行的方法,写法如下:

public void onReceiver(Context context,Intent intent){ String action=intent.getAction(); if(Intent.ACTION_BATTERY_CHANGED.equals(action)){ /*运行程序的代码*/ } }

添加这一判断Intent.ACTION_BATTERY_CHANGED.equals(action)是为了确保BroadcastReceiver只会被Intent.ACTION_BATTERY_CHANGED这个触发。如果没有这个判断程序也是可以运行的。

Android API中说明,要注册含有Intent.ACTION_BATTERY_CHANGED的Receiver,只能在程序中以Context.registerReceiver()方式来注册,不能直接在AndroidManifest.xml中注册。

本例中使用了让Dialog在弹出时,背景的窗口呈现模糊的状态:

final Dialog d=new Dialog(A02Activity.this); d.setTitle(R.string.str_title); d.setContentView(R.layout.dialog); Window window=d.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

其中WindowManager.LayoutParams.FLAG_BLUR_BEHIND是告诉目前的Window不管是什么对象显示于前端,都会出现在Window的最上层,让背景Window呈现模糊状态。也可以在其他程序中使用这个效果。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》及《Android开发入门与进阶教程》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-10-10 09:58:48

Android查看电池电量的方法(基于BroadcastReceiver)的相关文章

Android查看电池电量的方法(基于BroadcastReceiver)_Android

本文实例讲述了Android查看电池电量的方法.分享给大家供大家参考,具体如下: 程序如下: import android.app.Activity; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; impor

Android获取手机电池电量用法实例_Android

本文实例讲述了Android获取手机电池电量用法.分享给大家供大家参考.具体如下: 原理概述: 手机电池电量的获取在应用程序的开发中也很常用,Android系统中手机电池电量发生变化的消息是通过Intent广播来实现的,常用的Intent的Action有  Intent.ACTION_BATTERY_CHANGED(电池电量发生改变时).Intent.ACTION_BATTERY_LOW(电池电量达到下限时).和Intent.ACTION_BATTERY_OKAY(电池电量从低恢复到高时). 当

Android编程之电池电量信息更新的方法(基于BatteryService实现)_Android

本文实例讲述了Android编程之电池电量信息更新的方法.分享给大家供大家参考,具体如下: 电池的信息,电压,温度,充电状态等等,都是由BatteryService来提供的.BatteryService是跑在system_process当中,在系统初始化的时候启动,如下 在SystemServer.java中可以看到启动BatteryService的代码: Log.i(TAG, "Starting Battery Service."); BatteryService battery =

Android中如何制作电池电量进度条:上下滚动图片的进度条(battery)

最近,制作一个app,需要模拟一个电池电量的进度条,根据电量多少来设置百分比,进度条不断上下滚动,就像平时手机充电一样的电池电量进度条.我就自定义view实现了电量进度条.修改图片就可以达到自己想要的效果 一.自定义View,Battery.java,循环刷新界面,两张图片上下滚动,达到不断向右移动的效果.挺有意思的 package com.example.battery; import android.content.Context; import android.content.res.Re

Android中获取电池电量实例代码_Android

复制代码 代码如下: /** * * @author chrp * *显示当前电池电量 */ public class MainActivity extends Activity { private TextView tv; /** * 广播接受者 */ class BatteryReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO

Android电池电量跳变

问题情形: 1.电量跳变到50% 2.电池ID脚接地 3.温度脚来判断电池是否在位 推测原因: 判断电池在位的方法: qpnp-linear-charger.c enum bpd_type{ BPD_TYPE_BAT_ID="bpd_id", BPD_TYPE_BAT_THM="bpd_thm", BPD_TYPE_BAT_THE_BAT_ID="bpd_thm_id", } 先在设备树查找bpd是否有值 of_property_read_str

Android中获取电池电量实例代码

复制代码 代码如下: /** * * @author chrp * *显示当前电池电量 */ public class MainActivity extends Activity { private TextView tv; /** * 广播接受者 */ class BatteryReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO

三星J5电池电量百分比隐藏显示的方法(J5008)

1.操作是比较简单我们在j5手机待机状态下点击桌面中的[应用程序]. 2.之后我们再点击应用桌面下的[设定]. 3.接着在打开进入到的应用桌面下我们再点击[电池]打开进入细节如下所示. 4.点击屏幕右上角[更多]. 5.电池界面我们会看到有一项[隐藏电池电量百分比],我们把它打开即可. 6.电池电量百分比已隐藏. 好了这样在手机屏幕上就看不到手机的电池比例了,这个其实是不方便了我觉得还是开启的比较好了,这个看手机电量都不看怎么知道有没有电呢.

小谈Android应用的电量消耗和优化策略

众所周知,对于Android移动应用的开发者来说,耗电量的控制一直是个老大难问题.    工欲善其事,必先利其​器,同样的道理,想要控制耗电量,必须要有工具或者方法比较准确的定位应用的耗电情况.下面,我们先来分析下如何计算android应用的耗电量.    在android自带的设置里面有电量计算的界面,如下图:    我们看下是如何实现的:​    在android framework里面有专门负责电量统计的Service:BatteryStatsSerive.这个Service在Activi