Android之手机电池电量应用

原理概述:

手机电池电量的获取在应用程序的开发中也很常用,Android系统中手机电池电量发生变化的消息是通过Intent广播来实现的,常用的Intent的Action有  Intent.ACTION_BATTERY_CHANGED(电池电量发生改变时)、Intent.ACTION_BATTERY_LOW(电池电量达到下限时)、和Intent.ACTION_BATTERY_OKAY(电池电量从低恢复到高时)。

当需要在程序中获取电池电量的信息时,需要为应用程序注册BroadcastReceiver组件,当特定的Action事件发生时,系统将会发出相应的广播,应用程序就可以通过BroadcastReceiver来接受广播,并进行相应的处理。

main.xml布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"     android:layout_width="fill_parent"    android:layout_height="fill_parent">    <ToggleButton android:id="@+id/tb"        android:layout_width="fill_parent"        android:layout_height="wrap_content"         android:textOn="停止获取电量信息"        android:textOff="获取电量信息" />    <TextView android:id="@+id/tv"         android:layout_width="fill_parent"        android:layout_height="wrap_content" /></LinearLayout>

BatteryActivity类

package com.ljq.activity;

import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.widget.CompoundButton;import android.widget.TextView;import android.widget.ToggleButton;import android.widget.CompoundButton.OnCheckedChangeListener;

public class BatteryActivity extends Activity {    private ToggleButton tb=null;    private TextView tv=null;    private BatteryReceiver receiver=null;

    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);

        receiver=new BatteryReceiver();        tv=(TextView)findViewById(R.id.tv);        tb=(ToggleButton)findViewById(R.id.tb);        tb.setOnCheckedChangeListener(new OnCheckedChangeListener(){            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {                //获取电池电量                if(isChecked){                    IntentFilter filter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);                    registerReceiver(receiver, filter);//注册BroadcastReceiver                }else {                    //停止获取电池电量                    unregisterReceiver(receiver);                    tv.setText(null);                }

            }        });

    }

    private class BatteryReceiver extends BroadcastReceiver{        @Override        public void onReceive(Context context, Intent intent) {            int current=intent.getExtras().getInt("level");//获得当前电量            int total=intent.getExtras().getInt("scale");//获得总电量            int percent=current*100/total;            tv.setText("现在的电量是"+percent+"%。");        }    }

}

运行结果

时间: 2024-10-11 03:59:28

Android之手机电池电量应用的相关文章

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

对于Android移动应用的开发者来说,耗电量的控制一直是个老大难问题. 我们想要控制耗电量,必须要有工具或者方法比较准确的定位应用的耗电情况.下面,我们先来分析下如何计算android应用的耗电量. 在android自带的设置里面有电量计算的界面,如下图: <ignore_js_op> 我们看下是如何实现的:? 在android framework里面有专门负责电量统计的Service:BatteryStatsSerive.这个Service在ActivityManagerService中创

android显示手机电量

package com.basillee.asus.demo; import android.app.Notification; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import an

Android移动客户端性能测试浅谈——电量

本文由作者张迎贞授权网易云社区发布. APP性能测试除了需要监控PCU.内存占用.流量等,还需要获取APP的电量数据,测试在可接受范围内,避免APP出现过度消耗电量的现象.手机有很多硬件模块:CPU,蓝牙,GPS,显示屏,Wifi,射频(Cellular Radio)等,在手机使用过程中,这些硬件模块可能处于不同的状态,譬如WIFI打开或关闭,屏幕是亮还是暗,CPU运行或休眠. 硬件模块在不同的状态下的耗电量是不同的.Android在进行电量统计时,并不是采用直接记录电流消耗量的方式,而是跟踪硬

Unity获取Android和iOS手机系统电量及网络状况

最开始考虑使用中间静态链接库来调用手机系统自带的API,但是在研究的过程中发现Android系统将电量等信息记录在了固定的文件中,所以只需要在C#中直接读取就可以而不需要中间库. a.Android版 1.通过C#直接读取,下面的GetBatteryLevel()方法 int GetBatteryLevel() { try { string CapacityString = System.IO.File.ReadAllText("/sys/class/power_supply/battery/c

Android系统电量指示灯 Cubietruck

请先移步,对led的操作,我们使用相同的battrey_leds.shhttp://forum.cubietech.com/forum.php?mod=viewthread&tid=3212&highlight=%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0[嵌入式学习]led 子系统与led trigger 参考以下三篇博文 1. 系统服务的启动方式 http://blog.csdn.net/windskier/article/details/

Android Manifest 权限描述大全

android permission常用权限说明 android.permission.ACCESS_CHECKIN_PROPERTIES 访问登记属性 读取或写入登记check-in数据库属性表的权限 android.permission.ACCESS_COARSE_LOCATION 获取错略位置 通过WiFi或移动基站的方式获取用户错略的经纬度信息, 定位精度大概误差在30~1500米 android.permission.ACCESS_FINE_LOCATION 获取精确位置 通过GPS芯

[Android Pro] Android性能优化典范第一季

reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议. 主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.下

Google 发布的15个 Android 性能优化典范

2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议.主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.下面是对这些问题和建议的总结梳理. 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计师的

Material Design &amp; Android 5

最近研究了一下Material Design和Android 5的新特性,这里做下总结归纳. Material Design在我认为就是类似于卡片一样的设计,当然并不只是卡片,material design可以把一个布局或者控件当做实际生活中得一个卡片来对待. 那么具有以下几个方面的属性(具体参照http://www.google.com/design/spec/material-design/introduction.html 上面某些效果看起来还是挺炫的): 物理属性——卡片是三维的,在z坐