2011-07-03 148 views
4

我一直在尋找這個,只發現真正搞砸的東西。 是不是有一種簡單的方法來顯示在烤麪包或Textview上的21%的電池電量? 或者我該如何做到這一點?Android開發:顯示電池電量

//西蒙

+0

的[電池的Android SDK中(http://stackoverflow.com/questions/1805895/android-battery-in-sdk)可能重複 –

+0

如果你想從文件系統讀取它,你可以得到那從/ sys/class/power_supply/battery /容量默認是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 
> 

啊,還有什麼可以做,它說特德提到的網頁,然後使用一個處理程序,顯示敬酒。這是您需要添加到活動中的代碼。

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:理想情況下,使用'BatteryManager.EXTRA_LEVEL'而不是''level「'。此外,該級別不是一個百分比。這是一個範圍從0到'BatteryManager.EXTRA_SCALE'額外值的值。在許多設備上,比例*是* 100,但不要假設。 – CommonsWare

14

爲了讓電池電量,現在,請致電:

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

(注:打字,在從內存中,請調整如果需要的話)

這將返回與各種額外的Intent記錄在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); 
    }