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 를 사용해서 충전 상태를 확인할 수 있습니다.
이 기능을 활용하여 배터리 경고 알림, 충전 완료 알림 등 다양한 기능을 앱 내부에서 사용자에게 표시해줄 수 있습니다.
시연 영상입니다.
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] 터치 이벤트로 생성한 커스텀 View를 WebView에 출력하기 (2) | 2025.02.19 |
---|---|
[JAVA][Android] CollapsingToolbarLayout 상단바 확장될 때만 클릭할 수 있는 버튼 만들기 (0) | 2025.02.16 |
[JAVA][Android] CollapsingToolbarLayout 상단바 확장/축소에 따라 상태바 색상 변경하기 (0) | 2025.02.16 |
[Java][Android] 터치 이벤트 좌표 추적하기 (0) | 2025.02.13 |
[JAVA][Android] RecyclerView에서 스와이프로 항목 삭제 (Undo 기능 포함) (0) | 2025.02.10 |