2012-09-05 5 views
1

서비스에서 배터리 잔량을 모니터링해야하는 앱을 개발 중입니다. 아무도 나 한테 어떻게하는지 말해 줄 수 없어? 서비스가 아닌 활동에서 배터리 상태를 가져 오는 샘플 코드를 발견했습니다.Android의 서비스에서 배터리 상태 가져 오기

감사합니다. http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

+1

당신은 방송 수신기를 통해 그것을 확실히 할 수 있습니다 http://developer.android.com/training/monitoring-device-state/battery-monitoring.html – Christopher

+0

마크 받아 들여지는 등의 답변 PLZ – tobias

답변

0

는 브로드 캐스트 리시버를 통해 필요가 무엇인가? 활동과 마찬가지로 배터리 이벤트 수신자를 서비스에 등록 할 수 있어야합니다. 예를 들어 :

private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){ 
    @Override 
    public void onReceive(Context arg0, Intent intent) { 
     int rawLevel = intent.getIntExtra("level", -1); 
     int scale = intent.getIntExtra("scale", -1); 
     int status = intent.getIntExtra("status", -1); 
     // Do something 
    } 
}; 

public void onCreate() { 
    registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
} 

public void onDestroy() { 
    unregisterReceiver(this.mBatInfoReceiver); 
} 
4

의 차이점은 무엇입니까 : 여기

5

사용 ACTION_BATTERY_CHANGED. 배터리 값이 변경 될 때마다 호출됩니다. 가 수행하는 방법을 보려면 아래 코드를 참조하십시오 : 당신이 ACTION_BATTERY_CHANGED를 사용해야합니다 생각

public void onCreate() 
{ 

this.registerReceiver(this.mBatInfoReceiver, 
     new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
} 

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){ 
    @Override 
    public void onReceive(Context arg0, Intent intent) { 

    int level = intent.getIntExtra("level", 0); 
    Log.e("test", String.valueOf(level) + "%"); 

    } 
}; 


public void onDestroy(){ 

    // unregister receiver 
    this.unregisterReceiver(this.mBatInfoReceiver); 
} 
0

합니다. 끈적한 인 텐트이므로 브로드 캐스트 리시버에서 직접 모니터링 할 필요가 없습니다. 액티비티에서 직접 참조를 얻을 수 있습니다.

는, 당신은 단순히 다음 코드에서와 같이 registerReceiver 수신기로 null을 전달 호출하여 브로드 캐스트 리시버-A를 등록 할 필요가 없습니다 끈적 의도이기 때문에, 현재의 배터리 상태 : 안드로이드 문서에서

인 텐트가 반환됩니다.

http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

관련 문제