4

BatteryManager クラスには現在のメトリックがありません: http://developer.android.com/reference/android/os/BatteryManager.html

Android Phone のバッテリー電流値の取得 著者は、Linux エントリからそのような値を取得できないことも発見したようです。

また、CurrentWidget というウィジェットを Nexus 7 にダウンロードしました。現在の値については、「データなし」と表示されます。

そのため、現在の値を取得するにはおそらく電流センサーが必要であり、一部の Android システムにはそのようなセンサーがありません。では、Android システムはどのようにして現在のバッテリー レベルを知ることができるのでしょうか? たぶん、バッテリーの電圧を使用してそれを推測するだけです(放電中に電圧が低下します)?しかし、それは非常に粗いものになります。誰かが、Android の現在の値なしでバッテリー レベルを推定するために使用される「トリック」があると言っています (おそらく電圧に基づいていますか?)。参照はありますか?

PS: なぜか、現在の値を iphone 3GS に記録できることを知っています。

4

1 に答える 1

1

このコードを試してみてください。

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
      @Override
      public void onReceive(Context arg0, Intent intent) {
        // TODO Auto-generated method stub
          //this will give you battery current status
        int level = intent.getIntExtra("level", 0);

        contentTxt.setText(String.valueOf(level) + "%");

        int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        textView2.setText("status:"+status);
        boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                            status == BatteryManager.BATTERY_STATUS_FULL;
        textView3.setText("is Charging:"+isCharging);
        int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
        textView4.setText("is Charge plug:"+chargePlug);
        boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;

        boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
        textView5.setText("USB Charging:"+usbCharge+" AC charging:"+acCharge);

      }
    };

メインクラスでは、次を使用してこれを登録します。

 this.registerReceiver(this.mBatInfoReceiver, 
          new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
于 2013-05-31T04:25:08.083 に答える