當手機電量發生改變時,系統會對外發送Intent的Action為android.intent.action.BATTERY_CHANGED常量的廣播;當手機電量過低時,系統會對外發送Intent的Action為android.intent.action.BATTERY_LOW常量的廣播。
當手機電池從電量不足狀態恢複時,系統會對外發送Intent的Action為android.intent.action.BATTERY_OKAY常量的廣播。
下面通過一個簡單一實例來示範:
Receiver:
package com.home.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.widget.Toast; public class BatteryReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())) { Toast.makeText(context, "電量已恢複,可以使用!", Toast.LENGTH_LONG).show(); } if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) { Toast.makeText(context, "電量過低,請儘快充電!", Toast.LENGTH_LONG).show(); } if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { Bundle bundle = intent.getExtras(); // 擷取當前電量 int current = bundle.getInt("level"); // 擷取總電量 int total = bundle.getInt("scale"); StringBuffer sb = new StringBuffer(); sb.append("當前電量為:" + current * 100 / total + "%" + " "); // 如果當前電量小於總電量的15% if (current * 1.0 / total < 0.15) { sb.append("電量過低,請儘快充電!"); } else { sb.append("電量足夠,請放心使用!"); } Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show(); } } } package com.home.receiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.widget.Toast;public class BatteryReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())) { Toast.makeText(context, "電量已恢複,可以使用!", Toast.LENGTH_LONG).show(); } if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) { Toast.makeText(context, "電量過低,請儘快充電!", Toast.LENGTH_LONG).show(); } if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { Bundle bundle = intent.getExtras(); // 擷取當前電量 int current = bundle.getInt("level"); // 擷取總電量 int total = bundle.getInt("scale"); StringBuffer sb = new StringBuffer(); sb.append("當前電量為:" + current * 100 / total + "%" + " "); // 如果當前電量小於總電量的15% if (current * 1.0 / total < 0.15) { sb.append("電量過低,請儘快充電!"); } else { sb.append("電量足夠,請放心使用!"); } Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show(); } }}
配置Receiver:
receiver android:name="com.home.receiver.BatteryReceiver"> <intent-filter> <action android:name="android.intent.action.BATTERY_CHANGED" /> <action android:name="android.intent.action.BATTERY_OKAY"/> <action android:name="android.intent.action.BATTERY_LOW"/> </intent-filter> </receiver> <receiver android:name="com.home.receiver.BatteryReceiver"> <intent-filter> <action android:name="android.intent.action.BATTERY_CHANGED" /> <action android:name="android.intent.action.BATTERY_OKAY"/> <action android:name="android.intent.action.BATTERY_LOW"/> </intent-filter> </receiver>