Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 接收系統廣播消息之監聽手機電量變化

接收系統廣播消息之監聽手機電量變化

編輯:關於Android編程

當手機電量發生改變時,系統會對外發送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>

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved