Mục tiêu
Đọc % pin và trạng thái (sạc/đang dùng) qua BatteryManager (API 21+).
Các bước
Bước 1: Tạo project
Bước 2: Layout activity_main.xml
<LinearLayout ... android:gravity="center" android:orientation="vertical">
<TextView android:id="@+id/text" android:text="battery percentage" android:textSize="18sp" android:textAlignment="center" android:layout_width="match_parent" android:layout_height="wrap_content" />
</LinearLayout>
Bước 3: MainActivity.java
public class MainActivity extends AppCompatActivity {
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = findViewById(R.id.text);
BatteryManager bm = (BatteryManager) getSystemService(BATTERY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int level = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
int status = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_STATUS);
String statusStr = "";
switch (status) {
case BatteryManager.BATTERY_STATUS_CHARGING: statusStr = "Charging"; break;
case BatteryManager.BATTERY_STATUS_DISCHARGING: statusStr = "Discharging"; break;
case BatteryManager.BATTERY_STATUS_FULL: statusStr = "Full"; break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING: statusStr = "Not charging"; break;
default: statusStr = "Unknown";
}
text.setText("Battery: " + level + "% (" + statusStr + ")");
}
}
}
API chính (API 21+):
BatteryManager.BATTERY_PROPERTY_CAPACITY: % pin (0-100).BatteryManager.BATTERY_PROPERTY_STATUS: Trạng thái.BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER: Dung lượng hiện tại (µAh).BatteryManager.BATTERY_PROPERTY_CURRENT_NOW: Dòng điện hiện tại (µA).
Cách cũ (BroadcastReceiver): Đăng ký ACTION_BATTERY_CHANGED để nhận intent sticky chứa EXTRA_LEVEL, EXTRA_SCALE, EXTRA_STATUS... (đồng bộ, không cần permission).
Kết quả
Hiển thị % pin (ví dụ 100%):

Lưu ý
- Cần API 21+ cho getIntProperty.
- BroadcastReceiver cách cũ hoạt động mọi API nhưng phức tạp hơn.
- Để monitor real-time: registerReceiver cho ACTION_BATTERY_CHANGED.