본문 바로가기
안드로이드 자바

[JAVA][Android] 앱 내에서 배터리 상태 나타내기

by teamnova 2025. 2. 20.
728x90

안녕하세요

이번주는 앱 내부에서 배터리 상태(충전 여부 및 배터리 잔량)를 실시간으로 확인하는것을 구현해보겠습니다.

 

우선 전체 코드입니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

  private TextView batteryStatusTextView;

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

    batteryStatusTextView = findViewById(R.id.batteryStatusTextView);

    // 배터리 상태를 감지하는 BroadcastReceiver 등록
    registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
  }

  // 배터리 상태를 감지하는 BroadcastReceiver
  private final BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
      int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); // 배터리 잔량 (%)
      int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
      int batteryPct = (int) ((level / (float) scale) * 100);

      int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
      String chargingStatus = "";

      switch (status) {
        case BatteryManager.BATTERY_STATUS_CHARGING:
          chargingStatus = "충전 중 ⚡";
          break;
        case BatteryManager.BATTERY_STATUS_FULL:
          chargingStatus = "배터리 완충 ✅";
          break;
        case BatteryManager.BATTERY_STATUS_DISCHARGING:
        case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
          chargingStatus = "충전 중 아님 ❌";
          break;
        default:
          chargingStatus = "알 수 없음";
          break;
      }

      // UI 업데이트
      batteryStatusTextView.setText("배터리 상태: " + chargingStatus + "\n배터리 잔량: " + batteryPct + "%");
    }
  };

  @Override
  protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(batteryReceiver); // 리시버 해제
  }
}

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:gravity="center"
  android:padding="20dp">

  <TextView
    android:id="@+id/batteryStatusTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="배터리 상태를 확인하는 중..."
    android:textSize="18sp"
    android:textStyle="bold"/>
</LinearLayout>

 

Intent.ACTION_BATTERY_CHANGED 를 사용해서 배터리 변경 이벤트를 감지합니다.

그리고 BatteryManager.EXTRA_LEVEL 로 배터리의 잔량을 가져옵니다.

그리고 BatteryManager.EXTRA_STATUS 를 사용해서 충전 상태를 확인할 수 있습니다.

 

이 기능을 활용하여 배터리 경고 알림, 충전 완료 알림 등 다양한 기능을 앱 내부에서 사용자에게 표시해줄 수 있습니다.

 

시연 영상입니다.