首页 > 系统 > Android > 正文

Android监听电池状态实例代码

2020-01-02 07:02:43
字体:
来源:转载
供稿:网友

如果要监听电池的状态改变,需要动态注册:android.intent.action.BATTERY_CHANGED,收到Action后可以根据对应的Key获取你需要的信息,更详细信息可以参考以下例子中的BatteryChangedReceiver类

具体代码如下所示:

package com.example.charginganimation;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.View;public class MainActivity extends Activity {private CustomClipLoading ccl;private BatteryChangedReceiver receiver = new BatteryChangedReceiver();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);registerReceiver(receiver, getFilter());}private IntentFilter getFilter() {IntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_BATTERY_CHANGED);filter.addAction(Intent.ACTION_BATTERY_LOW);filter.addAction(Intent.ACTION_BATTERY_OKAY);return filter;}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubunregisterReceiver(receiver);super.onDestroy();}class BatteryChangedReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubfinal String action = intent.getAction();if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED)) {System.out.println("BatteryChangedReceiver BATTERY_CHANGED_ACTION---");// 当前电池的电压int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,-1);// 电池的健康状态int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1);switch (health) {case BatteryManager.BATTERY_HEALTH_COLD:System.out.println("BATTERY_HEALTH_COLD");break;case BatteryManager.BATTERY_HEALTH_DEAD:System.out.println("BATTERY_HEALTH_DEAD ");break;case BatteryManager.BATTERY_HEALTH_GOOD:System.out.println("BATTERY_HEALTH_GOOD");break;case BatteryManager.BATTERY_HEALTH_OVERHEAT:System.out.println("BATTERY_HEALTH_OVERHEAT");break;case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:System.out.println("BATTERY_HEALTH_COLD");break;case BatteryManager.BATTERY_HEALTH_UNKNOWN:System.out.println("BATTERY_HEALTH_UNKNOWN");break;case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:System.out.println("BATTERY_HEALTH_UNSPECIFIED_FAILURE");break;default:break;}// 电池当前的电量, 它介于0和 EXTRA_SCALE之间int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);// 电池电量的最大值int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);// 当前手机使用的是哪里的电源int pluged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED,-1);switch (pluged) {case BatteryManager.BATTERY_PLUGGED_AC:// 电源是AC charger.[应该是指充电器]System.out.println("BATTERY_PLUGGED_AC");break;case BatteryManager.BATTERY_PLUGGED_USB:// 电源是USB portSystem.out.println("BATTERY_PLUGGED_USB ");break;default:break;}int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);switch (status) {case BatteryManager.BATTERY_STATUS_CHARGING:// 正在充电System.out.println("BATTERY_STATUS_CHARGING ");break;case BatteryManager.BATTERY_STATUS_DISCHARGING:System.out.println("BATTERY_STATUS_DISCHARGING ");break;case BatteryManager.BATTERY_STATUS_FULL:// 充满System.out.println("BATTERY_STATUS_FULL ");break;case BatteryManager.BATTERY_STATUS_NOT_CHARGING:// 没有充电System.out.println("BATTERY_STATUS_NOT_CHARGING ");break;case BatteryManager.BATTERY_STATUS_UNKNOWN:// 未知状态System.out.println("BATTERY_STATUS_UNKNOWN ");break;default:break;}// 电池使用的技术。比如,对于锂电池是Li-ionString technology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);// 当前电池的温度int temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);System.out.println("voltage = " + voltage + " technology = "+ technology + " temperature = " + temperature+ " level = " + level + " scale = " + scale);} else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_LOW)) {// 表示当前电池电量低System.out.println("BatteryChangedReceiver ACTION_BATTERY_LOW---");} else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_OKAY)) {// 表示当前电池已经从电量低恢复为正常System.out.println("BatteryChangedReceiver ACTION_BATTERY_OKAY---");}}}}

获取apk和版本信息

private int getVerCode(Context context) {int verCode = -1;try {verCode = context.getPackageManager().getPackageInfo("com.example.charginganimation", 0).versionCode;} catch (NameNotFoundException e) {e.printStackTrace();}return verCode;}private String getVerName(Context context) {String verName = "";try {verName = context.getPackageManager().getPackageInfo("com.example.charginganimation", 0).versionName;} catch (NameNotFoundException e) {e.printStackTrace();}return verName;}

以上代码内容是小编给大家介绍的android监听电池状态的实例代码,本文写的不好还请见谅,有好的意见欢迎给小编留言,我会及时给大家沟通的,谢谢大家一直以来对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表