안 드 로 이 드 는 배터리 상태 표시,전력 및 충전 동적 디 스 플레이 를 탐지 하 는 방법 을 실현 한다.

본 고 는 안 드 로 이 드 가 배터리 상태 표시,전량 및 충전 동적 디 스 플레이 를 실현 하 는 방법 을 실례 로 서술 하 였 으 며,안 드 로 이 드 응용 프로그램 개발 에서 매우 자주 사용 하 는 중요 한 기능 이다.여러분 께 참고 용 으로 나 누 어 드 리 겠 습 니 다.구체 적 인 방법 은 다음 과 같다.
안 드 로 이 드 시스템 의 배터리 검색 과 시스템 의 배터리 그림 을 사용 하면 다음 과 같 습 니 다.

원본 코드 에 있 는 xml 파일 두 개 를 도입 합 니 다.sys_battery.xml 오류 보고,아래 그림 참조:
 

1.이 그림 들 을 나의 drawable 디 렉 터 리 에 도입 한 후 statsys_battery.xml 의 그림 도입 경로 변경 은 다음 과 같 습 니 다.

<level-list xmlns:android="http://schemas.android.com/apk/res/android"> 
 <item android:maxLevel="4" android:drawable="@drawable/stat_sys_battery_0" /> 
 <item android:maxLevel="14" android:drawable="@drawable/stat_sys_battery_10" /> 
 <item android:maxLevel="29" android:drawable="@drawable/stat_sys_battery_20" /> 
 <item android:maxLevel="49" android:drawable="@drawable/stat_sys_battery_40" /> 
 <item android:maxLevel="69" android:drawable="@drawable/stat_sys_battery_60" /> 
 <item android:maxLevel="89" android:drawable="@drawable/stat_sys_battery_80" /> 
 <item android:maxLevel="100" android:drawable="@drawable/stat_sys_battery_100" /> 
</level-list>

2.다음은 activity 에서 의 동작:
IntentFilter 만 들 기

private IntentFilter mIntentFilter; 

oncreate 방법 중:가입:

//     
mIntentFilter = new IntentFilter(); 
mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); 

3.라디오 수신

//         
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 
  @Override 
  public void onReceive(Context context, Intent intent) { 
   String action = intent.getAction(); 
   int status = intent.getIntExtra("status", 0); 
   int health = intent.getIntExtra("health", 0); 
   boolean present = intent.getBooleanExtra("present", false); 
   int level = intent.getIntExtra("level", 0); 
   int scale = intent.getIntExtra("scale", 0); 
   int icon_small = intent.getIntExtra("icon-small", 0); 
   int plugged = intent.getIntExtra("plugged", 0); 
   int voltage = intent.getIntExtra("voltage", 0); 
   int temperature = intent.getIntExtra("temperature", 0); 
   String technology = intent.getStringExtra("technology"); 
   String statusString = ""; 
   switch (status) { 
   case BatteryManager.BATTERY_STATUS_UNKNOWN: 
    statusString = "unknown"; 
    break; 
   case BatteryManager.BATTERY_STATUS_CHARGING: 
    statusString = "charging"; 
    battery_image.setImageResource(R.drawable.stat_sys_battery_charge); 
    battery_image.getDrawable().setLevel(level); 
    break; 
   case BatteryManager.BATTERY_STATUS_DISCHARGING: 
    statusString = "discharging"; 
    battery_image.setImageResource(R.drawable.stat_sys_battery); 
    battery_image.getDrawable().setLevel(level); 
    break; 
   case BatteryManager.BATTERY_STATUS_NOT_CHARGING: 
    statusString = "not charging"; 
    break; 
   case BatteryManager.BATTERY_STATUS_FULL: 
    statusString = "full"; 
    break; 
   } 
   String healthString = ""; 
   switch (health) { 
   case BatteryManager.BATTERY_HEALTH_UNKNOWN: 
    healthString = "unknown"; 
    break; 
   case BatteryManager.BATTERY_HEALTH_GOOD: 
    healthString = "good"; 
    break; 
   case BatteryManager.BATTERY_HEALTH_OVERHEAT: 
    healthString = "overheat"; 
    break; 
   case BatteryManager.BATTERY_HEALTH_DEAD: 
    healthString = "dead"; 
    break; 
   case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: 
    healthString = "voltage"; 
    break; 
   case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: 
    healthString = "unspecified failure"; 
    break; 
   } 
   String acString = ""; 
   switch (plugged) { 
   case BatteryManager.BATTERY_PLUGGED_AC: 
    acString = "plugged ac"; 
    break; 
   case BatteryManager.BATTERY_PLUGGED_USB: 
    acString = "plugged usb"; 
    break; 
   } 
   Log.i("cat", statusString); 
   Log.i("cat", healthString); 
   Log.i("cat", String.valueOf(present)); 
   Log.i("cat", String.valueOf(level)); 
   Log.i("cat", String.valueOf(scale)); 
   Log.i("cat", String.valueOf(icon_small)); 
   Log.i("cat", acString); 
   Log.i("cat", String.valueOf(voltage)); 
   Log.i("cat", String.valueOf(temperature)); 
   Log.i("cat", technology); 
   //               
   if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {    
    //    ,   
    Log.d("Battery", "" + intent.getIntExtra("level", 0));     
    //       
    Log.d("Battery", "" + intent.getIntExtra("scale", 0));     
    //     
    Log.d("Battery", "" + intent.getIntExtra("voltage", 0));     
    //     
    Log.d("Battery", "" + intent.getIntExtra("temperature", 0)); 
    //    ,        
    // BatteryManager.BATTERY_STATUS_CHARGING         
    // BatteryManager.BATTERY_STATUS_DISCHARGING     
    // BatteryManager.BATTERY_STATUS_NOT_CHARGING     
    // BatteryManager.BATTERY_STATUS_FULL     
    Log.d("Battery", "ss" + intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_CHARGING)); 
    //     BatteryManager.BATTERY_PLUGGED_AC       ,     ,    USB 
    Log.d("Battery", "" + intent.getIntExtra("plugged", 0)); 
    //      ,         
    //BatteryManager.BATTERY_HEALTH_GOOD    
    //BatteryManager.BATTERY_HEALTH_OVERHEAT    
    //BatteryManager.BATTERY_HEALTH_DEAD    
    //BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE     
    //BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE      
    Log.d("Battery", "" + intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN)); 
   } 
  } 
 }; 

여기 서 진정 으로 그림 변환 을 처리 하 는 것 은 다음 과 같은 몇 마디 이다.

switch (status) { 
case BatteryManager.BATTERY_STATUS_UNKNOWN: 
 statusString = "unknown"; 
 break; 
case BatteryManager.BATTERY_STATUS_CHARGING: 
 statusString = "charging"; 
 battery_image.setImageResource(R.drawable.stat_sys_battery_charge); 
 battery_image.getDrawable().setLevel(level); 
 break; 
case BatteryManager.BATTERY_STATUS_DISCHARGING: 
 statusString = "discharging"; 
 battery_image.setImageResource(R.drawable.stat_sys_battery); 
 battery_image.getDrawable().setLevel(level); 
 break; 
case BatteryManager.BATTERY_STATUS_NOT_CHARGING: 
 statusString = "not charging"; 
 break; 
case BatteryManager.BATTERY_STATUS_FULL: 
 statusString = "full"; 
 break; 
}

4.onResume 방법 에 메시지 처리 기 등록

registerReceiver(mIntentReceiver, mIntentFilter); 

5.onPause 방법 에서 로그아웃

unregisterReceiver(mIntentReceiver);

이 글 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기