手机服务 & BroadcastReceiver & 获取电池相关内容

BatteryReceiver.java     广播机制

View Code
package com.example.batterydemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
import android.util.Log;

public class BatteryReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent intent) {
        // TODO Auto-generated method stub
        String action = intent.getAction();
        // 要看看是不是我们要处理的消息
        if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {

            // 电池电量,数字
            Log.i("Battery", "★电池电量★:" + intent.getIntExtra("level", 0));
            // 电池最大容量
            Log.i("Battery", "★电池最大容量★:" + intent.getIntExtra("scale", 0));
            // 电池伏数,电池的电压
            Log.i("Battery", "★电池伏数★:" + intent.getIntExtra("voltage", 0));
            // 电池温度(单位:摄氏度)
            Log.i("Battery", "★电池温度★:" + intent.getIntExtra("temperature", 0));
            // 取得电池类型
            Log.i("Battery", "★电池类型★:" + intent.getStringExtra("technology"));
            // 取得电池对应的图标ID
            Log.i("Battery",
                    "★取得电池对应的图标ID★:" + intent.getIntExtra("icon-small", 0));

            /** 电池状态,返回是一个数字 */
            // BatteryManager.BATTERY_STATUS_CHARGING 表示是充电状态
            // BatteryManager.BATTERY_STATUS_NOT_CHARGING 表示电池不充电状态
            // BatteryManager.BATTERY_STATUS_DISCHARGING 放电中
            // BatteryManager.BATTERY_STATUS_NOT_CHARGING 未充电
            // BatteryManager.BATTERY_STATUS_FULL 电池满
            Log.i("Battery","★电池状态★:"
                        + intent.getIntExtra("status",
                            BatteryManager.BATTERY_STATUS_UNKNOWN));
            Log.i("Battery", "充电状态:" + BatteryManager.BATTERY_STATUS_CHARGING);
            Log.i("Battery", "电池不充电状态:"
                    + BatteryManager.BATTERY_STATUS_NOT_CHARGING);
            Log.i("Battery", "放电中:" + BatteryManager.BATTERY_STATUS_DISCHARGING);
            Log.i("Battery", "未充电:"
                    + BatteryManager.BATTERY_STATUS_NOT_CHARGING);
            Log.i("Battery", "电池满:" + BatteryManager.BATTERY_STATUS_FULL);

            /** 充电类型 */
            Log.i("Battery", "★充电类型★ :" + intent.getIntExtra("plugged", 0));
            Log.i("Battery", "交流电电源:" + BatteryManager.BATTERY_PLUGGED_AC);
            Log.i("Battery", "USB电源:" + BatteryManager.BATTERY_PLUGGED_USB);

            /** 电池健康情况,返回也是一个数字 */
            // BatteryManager.BATTERY_HEALTH_GOOD 电池健康
            // BatteryManager.BATTERY_HEALTH_OVERHEAT 电池过热
            // BatteryManager.BATTERY_HEALTH_DEAD 电池损毁
            // BatteryManager.BATTERY_HEALTH_UNKNOWN 未知状态
            // BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE 电池电压过大
            // BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE 未明示故障
            Log.i("Battery",
                    "★电池健康情况★:"
                            + intent.getIntExtra("health",
                                    BatteryManager.BATTERY_HEALTH_UNKNOWN));
            Log.i("Battery", "电池健康:" + BatteryManager.BATTERY_HEALTH_GOOD);
            Log.i("Battery", "电池过热:" + BatteryManager.BATTERY_HEALTH_OVERHEAT);
            Log.i("Battery", "电池损毁:" + BatteryManager.BATTERY_HEALTH_DEAD);
            Log.i("Battery", "未知状态:" + BatteryManager.BATTERY_HEALTH_UNKNOWN);
            Log.i("Battery", "电池电压过大:"
                    + BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE);
            Log.i("Battery", "未明示故障:"
                    + BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE);
            
        }
    }

}

 

BatteryActivity.java      Activity页面

View Code
package com.example.batterydemo;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;

public class BatteryActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.main);
        BatteryReceiver breceiver = new BatteryReceiver();
        IntentFilter intentFinter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        BatteryActivity.this.registerReceiver(breceiver, intentFinter);
    }

}

 

AndroidManifest.xml     配置文件

View Code
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.batterydemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".BatteryActivity"
            android:label="@string/app_name"
            android:theme="@style/FullscreenTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        
        <receiver android:name=".BatteryReceiver" />
    </application>

</manifest>

 

 

 

转载于:https://www.cnblogs.com/androidsj/archive/2013/03/28/2986631.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BroadcastReceiver是Android中的一个组件,用于接收和处理广播消息。通过注册BroadcastReceiver,我们可以接收系统广播或自定义广播,并在接收到广播时执行相应的操作。 举例来说,如果我们注册了一个接收系统开机完成广播的BroadcastReceiver,当系统开机完成时,我们的BroadcastReceiver就会收到这个广播,并可以在接收到广播后执行我们希望的操作,比如启动一个服务或显示一个通知。 在提供的引用中,提到了registerReceiver和unregisterReceiver方法。registerReceiver方法用于注册一个广播接收者,可以多次执行,但不建议重复注册同一个广播接收者,因为这样会导致接收到多次广播。unregisterReceiver方法用于取消注册已注册的广播接收者。 在引用中,提到了广播接收者的优先级和拦截广播的问题。广播接收者可以通过设置优先级来决定接收广播的顺序,优先级高的广播接收者先接收广播。同时,如果一个广播接收者未拦截广播,那么其他广播接收者也会接收到相同的广播。 引用中提到BroadcastReceiver是Android四大组件之一,用于接收各种类型的广播消息,如开机广播、电量不足广播、短信广播等。一旦接收到广播,我们可以根据需要执行相应的操作。 总结来说,BroadcastReceiver是Android中用于接收和处理广播消息的组件,通过注册广播接收者,我们可以接收系统广播或自定义广播,并在接收到广播时执行相应的操作。广播接收者可以设置优先级来决定接收广播的顺序,同时可以拦截广播。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值