Notice
Recent Posts
Recent Comments
Link
투케이2K
163. (AndroidStudio/android/java) 브로드캐스트 리시버 (BroadcastReceiver) 사용해 배터리 (battery) 충전 상태 확인 실시 본문
Android
163. (AndroidStudio/android/java) 브로드캐스트 리시버 (BroadcastReceiver) 사용해 배터리 (battery) 충전 상태 확인 실시
투케이2K 2021. 5. 25. 09:38/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
//TODO ====== [AndroidManifest.xml 파일] ======
<!-- [배터리 잔량 및 충전 이벤트 확인 액티비티] -->
<activity
android:name=".A_Battery"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"/>
<!-- [배터리 잔량 및 충전 이벤트 확인 리시버] -->
<receiver
android:name=".A_BatteryReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
//TODO ====== [JAVA : A_Battery] ======
/** [브로드캐스트 등록 부분] **/
A_BatteryReceiver a_batteryReceiver;
public void setBroaCastStart(){
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_Battery > setBroaCastStart() 메소드 : 브로드캐스트 등록 실시]");
Log.d("","\n"+"[로직 : onResume() 메소드에서 등록 수행]");
Log.w("//===========//","================================================");
Log.d("---","---");
try {
//TODO [브로드캐스트 등록]
a_batteryReceiver = new A_BatteryReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_POWER_CONNECTED);
filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
registerReceiver(a_batteryReceiver, filter);
}
catch (Exception e){
e.printStackTrace();
}
}
/** [브로드캐스트 해제 부분] **/
public void setBroaCastStop(){
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_Battery > setBroaCastStop() 메소드 : 브로드캐스트 해제 실시]");
Log.d("","\n"+"[로직 : onPause() 메소드에서 해제 수행]");
Log.e("//===========//","================================================");
Log.d("---","---");
try {
//TODO [브로드캐스트 해제]
if(a_batteryReceiver != null){
unregisterReceiver(a_batteryReceiver);
}
}
catch (Exception e){
e.printStackTrace();
}
}
//TODO ====== [JAVA : A_BatteryReceiver] ======
package kr.co.two2k.manager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.Date;
public class A_BatteryReceiver extends BroadcastReceiver {
/**
* 1. 참고사항 : 애플리케이션을 작업 목록에서 완전히 지워버릴 경우 (kill) 브로드 캐스트 리시버 알림을 받지 못합니다
* */
/** [클래스 전역 변수 선언 부분] **/
public static final String CHARGE_CONNECT_EVENT = "android.intent.action.ACTION_POWER_CONNECTED";
public static final String CHARGE_DISCONNECT_EVENT = "android.intent.action.ACTION_POWER_DISCONNECTED";
String actionName = "";
String actionContent = "";
Context mContext;
/** [onReceive 메소드를 재정의 (채널 알림 메시지 확인 부분)] **/
@Override
public void onReceive(Context context, Intent intent) {
try {
mContext = context;
actionName = String.valueOf(intent.getAction());
actionContent = String.valueOf(intent.getStringExtra("broadCastData"));
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_BatteryReceiver > onReceive() 메소드 : 수신받은 채널 알림 내용 확인]");
Log.d("","\n"+"[채널 : "+String.valueOf(actionName)+"]");
Log.d("","\n"+"[내용 : "+String.valueOf(actionContent)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO [프리퍼런스에 충전 시작, 종료 시간 저장 실시]
if(CHARGE_CONNECT_EVENT.equals(actionName)){ //TODO [충전 시작 이벤트를 받은 경우]
Toast.makeText(mContext, "충전이 시작되었습니다", Toast.LENGTH_SHORT).show();
S_Preference.setString(mContext, "CHARGE_START_TIME", String.valueOf(getNowTime24()));
}
else if(CHARGE_DISCONNECT_EVENT.equals(actionName)){ //TODO [충전 종료 이벤트를 받은 경우]
Toast.makeText(mContext, "충전이 종료되었습니다", Toast.LENGTH_SHORT).show();
S_Preference.setString(mContext, "CHARGE_END_TIME", String.valueOf(getNowTime24()));
}
}
catch (Exception e){
e.printStackTrace();
}
}
/** [현재 날짜 및 시간 확인 메소드] **/
public static String getNowTime24() {
long time = System.currentTimeMillis();
//SimpleDateFormat dayTime = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat dayTime = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
String str = dayTime.format(new Date(time));
return str;
}
}//TODO [클래스 종료]
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments