2012-04-17 14 views
5

私は毎分のバッテリーの変化を検出したいと思います。私は放送受信機でバッテリーレベルを一度検出することができます。しかし%が66から67に変わると自動的に値を更新しません。検出Androidのすべてのパーセンテージでバッテリーの状態を変更

ここは私のコードです。

private void batteryLevel() { 
     BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() { 
      public void onReceive(Context context, Intent intent) { 
       context.unregisterReceiver(this); 
       Log.i("Battery CHANGED******",":: IN RECEIVER"); 

       int rawlevel = intent.getIntExtra("level", -1); 
       int scale = intent.getIntExtra("scale", -1); 
       int level = -1; 
       if (rawlevel >= 0 && scale > 0) { 
        level = (rawlevel * 100)/scale; 
       } 
       btnConsumer.setText("Battery Level Remaining: " + level + "%"); 
      } 
     }; 
     IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
     registerReceiver(batteryLevelReceiver, batteryLevelFilter); 

    } 

追加許可

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

それは65または67を変更したときにそれが値を更新しません66を検出したが。またはログを表示しない

私はすべての変更を得ることができるようにしたいと思います。

ありがとうございます。

答えて

12

まず、BATTERY_STATS権限は必要ありません。

第2に、onReceive()の最初の行にはBroadcastReceiverが登録されていないため、これ以上の更新が行われません。

第3に、バッテリー情報が1%ごとに変更されることを保証するものではありません。たとえば、モトローラの多くの電話機では、バッテリーが少なくなるまで、たびにACTION_BATTERY_CHANGEDを10%ごとに送信します。 ACTION_BATTERY_CHANGEDをブロードキャストする頻度は、デバイスメーカーが決定します。

関連する問題