2016-01-10 27 views
1

對於我的Android應用程序,我需要監控所有運行該應用程序的手機的電池消耗。在應用程序中需要有一個按鈕來啓動監控並停止監控,並且監控停止後,電池監控輸出應該保存爲電話本身的txt。我已經查看了batterystats,但根據文檔,監控過程是通過將設備連接到PC啓動的,並且在監控重新連接設備並進行轉儲後啓動。Android應用程序電池監控

那麼有可能在沒有連接到計算機的情況下啓動和停止監控並將輸出保存在本地電話上?

回答

1

當發生變化時,您可以使用廣播接收器接收有關電池的信息。

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

      mLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, Const.VALUE_UNSET); 
      mTemperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, Const.VALUE_UNSET); 
      mStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, Const.VALUE_UNSET); 
      mPlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, Const.VALUE_UNSET); 
      mScale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, Const.VALUE_UNSET); 
      mHealth = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, Const.VALUE_UNSET); 
      mVoltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, Const.VALUE_UNSET); 
      mTechnology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); 
} 

不要忘記在您的活動(或服務,如果它應該在後臺運行)註冊接收器。

註冊(的onCreate /在onStart ...):

registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 

註銷(在onPause/onDestory):

unregisterReceiver(...) 

寫入文件應該不會太難,只是在這裏搜索所以不要忘記設置權限(用於處理文件):

<uses-permission android:name="android.permission.BATTERY_STATS"/>