В Android есть ли способ получить ток батареи?

Класс BatteryManager не имеет текущего показателя: http://developer.android.com/reference/android/os/BatteryManager.html

А потом я нашел этот пост: Получение текущих значений заряда батареи для телефона Android Кажется, что автор также обнаружил, что невозможно получить такое значение из записи Linux.

Я также загрузил виджет с именем CurrentWidget в свой Nexus 7. Для текущего значения он показывает "нет данных".

Поэтому, вероятно, для получения текущего значения требуется датчик тока, а в некоторых системах Android таких датчиков просто нет. Тогда как система Android может узнать текущий уровень заряда батареи? Может быть, он просто использует напряжение батареи, чтобы вывести это (напряжение уменьшится во время разряда)? Но тогда это было бы очень грубо. Кто-то говорит, что в Android используется какой-то "трюк" для оценки уровня заряда батареи без текущих значений (возможно, на основе напряжения?). Есть какая-нибудь ссылка?

PS: почему-то знаю, что текущее значение можно записать на iphone 3GS

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));
Другие вопросы по тегам