2011-07-03 21 views
4

私はこれを探していて、本当に混乱しているものを見つけました。 トーストやテキストビューで21%のような電池残量を簡単に表示する方法はありませんか? またはこれをどのように達成できますか?Android開発:バッテリー残量を表示

//サイモン

+0

[SDKでのAndroidのバッテリー](http://stackoverflow.com/questions/1805895/android-battery-in-sdk) –

+0

の可能な重複ファイルシステムからそれを読みたい場合は、あなたが得ることができます/ sys/class/power_supply/battery/capacityからのデフォルト値は50です。 – JPM

答えて

10

あなたはエミュレータ上でバッテリーの状態を変更することを意味する場合は次の操作を行います。 Telnet経由エミュレータに接続し、ステータスと容量

> telnet localhost 5554 
Android Console: type 'help' for a list of commands 
OK 
power ac off 
OK 
power discharging 
OK 
power capacity 21 
OK 
exit 
> 

ああを変更、うまくいけば、それはテッドが言及したページに言って何をして、トーストを表示するためのハンドラを使用することができます。これはあなたのアクティビティに追加する必要があるコードです。

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

:これは、さまざまなエキストラとIntentを返します

(注:必要に応じてメモリから、調整してくださいタイピング)

private Handler handler = new Handler; 

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(final Context context, Intent intent) { 
     int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); 
     int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100); 
     Log.i(TAG, "level: " + level + "; scale: " + scale); 
     int percent = (level*100)/scale; 

     final String text = String.valueOf(percent) + "%"; 
     handler.post(new Runnable() { 

      public void run() { 
       Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    } 
}; 
+0

申し訳ありません、BatteyManager.getLevel()のようですが、そこにはありません。だから基本的には、私は自分の携帯電話でどれくらいのバッテリー報酬を持っているかを表示します – carefacerz

+0

値を表示するコードで回答を更新しました。 – Augusto

+3

@Augusto:理想的には、 "level"の代わりに 'BatteryManager.EXTRA_LEVEL'を使用してください。また、レベルはパーセンテージではありません。これは0から 'BatteryManager.EXTRA_SCALE'余分な値までの範囲の値です。多くのデバイスでは、*は* 100ですが、それを想定していません。 – CommonsWare

14

は呼び出し、今のバッテリーレベルを取得するにはBatteryManagerクラスで文書化されています。残りの割合を確認するには、BatteryManager.EXTRA_LEVELBatteryManager.EXTRA_SCALEを使用してください。

バッテリーの交換時期を知る必要がある場合は、答えに記載されているBroadcastReceiverアプローチ@Augustoを使用してください。

+1

パーフェクトワンライナー... :) – TacB0sS

5
public static String batteryLevel(Context context) 
    { 
     Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
     int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); 
     int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100); 
     int percent = (level*100)/scale; 
     return String.valueOf(percent) + "%"; 
    } 
0

これは使用できます。

private void batteryLevel() { 
     BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() { 
      public void onReceive(Context context, Intent intent) { 
       //context.unregisterReceiver(this); 
       int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
       int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); 
       int level = -1; 
       if (rawlevel >= 0 && scale > 0) { 
        level = (rawlevel * 100)/scale; 
       } 
       batterLevel.setText("Battery Level Remaining: " + level + "%"); 
      } 
     }; 
     IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
     registerReceiver(batteryLevelReceiver, batteryLevelFilter); 
    } 
関連する問題