индикатор батареи для андроида - PullRequest
0 голосов
/ 06 марта 2012

У меня есть следующий пример кода для указания уровня заряда батареи.Когда я запускаю код, он выдает ошибку принудительного закрытия.У кого-нибудь есть идеи, почему?

public class ActActivity extends Activity {


      private BroadcastReceiver _batteryinfo = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
                int iBatLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
                /*ProgressBar _batPB = (ProgressBar) findViewById(R.id.progressBar);
                _batPB.setProgress(iBatLevel);
                TextView _batText = (TextView) findViewById(R.id.batterylevel);
                _batText.setText("Battery level:"+Integer.toString(iBatLevel)+"%");
                */
                Toast.makeText(context, iBatLevel, Toast.LENGTH_SHORT).show();

            }
        };


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        registerReceiver(_batteryinfo, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    }

}

В моем файле манифеста есть следующее, хотя я где-то читал, что оно не нужно для создания динамического приемника.

<receiver android:name=".service.BatteryActivity">
         <intent-filter>
            <action android:name="android.intent.action.BATTERY_CHANGED" />
        </intent-filter>
    </receiver> 

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

проверьте эту ссылку, я думаю, вам нужно добавить разрешение в menifest http://developer.android.com/reference/android/Manifest.permission.html#BATTERY_STATS

публичная статическая финальная строка BATTERY_STATS С тех пор: Уровень API 1

Позволяет приложению собирать статистику батареи Постоянное значение: "android.permission.BATTERY_STATS"

также Внутри onReceive извлекайте данные на основе элемента «level» (уровень заряда батареи) для версии <5 или используйте BatteryManager.EXTRA_LEVEL для версий> = 5.

0 голосов
/ 06 марта 2012

используйте этот код

   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);      
      } 
}
...