Получение уровня заряда

Вот пример кода, как можно получить уровень заряда аккумулятора в Android.
Настраиваем слушатель для IntentFilter(Intent.ACTION_BATTERY_CHANGED);
И при каждом изменении уровня будем получать событие в этом слушателе.
В extra-параметрах получаю процент заряда через переменную "level" .

 

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // На экране есть текстовое поле "batteryLevel", где и отображаю процент заряда. 
        final TextView batteryLevel = (TextView) this.findViewById(R.id.batteryLevel);

        BroadcastReceiver receiver = new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent intent) {
                int level = intent.getIntExtra("level", 0);
                batteryLevel.setText(String.valueOf(level) + "%");
            }
        };
        this.registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    }
   ...
}

 

Другой способ - это прочитать содержимое файла: /sys/class/power_supply/battery/capacity
В этом файле также текстом написан текущий % заряда.

В первом способе система сама будет оповещать об изменениях, а во втором надо сделить за содержимым файла с каким-то интервалом.