코드네임 :
📱 모바일프로그래밍 - 브로드캐스트 리시버 📱 본문
[ 브로드캐스트 리시버 ]
: 문자메시지 도착, 배터리 방전, SD카드 탈부착, 네트워크 환경 변화 등이 발생했을때 방송(브로드캐스트) 신호 보냄
: 이러한 신호를 받아서 처리하는게 브로드캐스트 리시버
(예를 들어 배터리가 20%일때 아이폰에서 Low Battery라고 알림 뜨잖어)

배터리 상태 체크 앱
Project10_2
MainActivity.java
oncreate 함수 바깥
// 액티비티가 일시 중지되었을 때(onPause),
// 브로드캐스트 리시버를 등록 해제하여 더 이상 배터리 상태 변경 이벤트를 수신하지 않도록 합니다.
@Override
protected void onPause() {
// super : 자식 클래스에서 부모 클래스의 메서드나 생성자를 명시적으로 호출할 때 사용
// 즉, super.onPause();는 부모 클래스의 기본 동작을 수행 (액티비티가 일시중지 상태로 전환될때 호출됨)
super.onPause();
//리시버(br)를 등록 해제하여 리소스 누수를 방지
unregisterReceiver(br);
}
// 액티비티가 다시 활성화되었을 때(onResume),
// 배터리 상태 변경 브로드캐스트를 수신하도록 리시버를 등록합니다.
@Override
protected void onResume() {
super.onResume();
//Intent.ACTION_BATTERY_CHANGED 액션을 filter에 추가하여 배터리 상태 변경 이벤트만 수신
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
// 정의된 리시버(br)를 등록하여 브로드캐스트를 감지
registerReceiver(br,filter);
}
// 브로드캐스트리시버 객체 br 정의
BroadcastReceiver br = new BroadcastReceiver() {
@Override
// onReceive() : Intent 객체에 담긴 정보를 바탕으로 배터리 상태를 파악하고 UI를 업뎃
public void onReceive(Context context, Intent intent) {
// intent.getAction(): 현재 수신한 브로드캐스트의 액션(이벤트 종류)을 action 변수에 가져옴
String action = intent.getAction();
// 이벤트 종류가 Intent.ACTION_BATTERY_CHANGED 라면
if (action.equals(Intent.ACTION_BATTERY_CHANGED)){
//배터리 잔량(0~100)을 가져와 remain에 저장
int remain = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
// binding.edtBattery.setText를 사용해 화면에 잔량을 표시
binding.edtBattery.setText("현재 충전량 : " + remain + "/n");
// 배터리 상태에 따른 이미지 업데이트
if(remain >= 90)
binding.ivBattery.setImageResource(R.drawable.battery_100);
if(remain >= 70)
binding.ivBattery.setImageResource(R.drawable.battery_80);
if(remain >= 50)
binding.ivBattery.setImageResource(R.drawable.battery_60);
if(remain >= 10)
binding.ivBattery.setImageResource(R.drawable.battery_20);
else
binding.ivBattery.setImageResource(R.drawable.battery_0);
// 현재 충전 상태 plug에 가져오기
int plug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
// switch문으로 충전 상태를 확인하고, 텍스트뷰에 결과를 추가
// (0이라면 충전중이지 않은 상태/BatteryManager.BATTERY_PLUGGED_AC: 충전 중)
switch (plug){
case 0:
binding.edtBattery.append("전원 연결 : 안됨 " + "\n");
break;
case BatteryManager.BATTERY_PLUGGED_AC:
binding.edtBattery.append("전원 연결 : 어댑터 연결 " + "\n");
break;
}
}
}
};
'👾Android > Android_JAVA' 카테고리의 다른 글
📱 모바일프로그래밍 - 데이터 저장소 & 공유환경설정 파일로 데이터 관리하기 📱 (0) | 2024.12.08 |
---|---|
📱 모바일프로그래밍 - 콘텐트프로바이더 📱 (0) | 2024.12.08 |
📱 모바일프로그래밍 - 서비스 📱 (3) | 2024.12.07 |
📱 모바일프로그래밍 - 과제 2📱 (0) | 2024.12.02 |
📱 모바일프로그래밍 - 뷰바인딩 📱 (0) | 2024.11.28 |