Notification 에서 Intent.ACTION_BATTERY_CHANGED 에 상태가 변했을떄 업데이트를 해주고 싶은데요
현재 단순히 broadcast로 정상적으로 동작을 합니다.
그런데 어플이 foreground에 있을떄 결국 실행하고 화면에 앱이 올라와있을떄는 정상적으로 나오죠
하지만 home key 나 back key로 나오면 동작을 안하네요.... BroadcastReceiver 를 정상동작하게
해주기만 하면 될것같은데 무슨 방법 없나요...
아래 코드는 혹시나 참고하시라고 일부 복사해왔습니다.....조금만 도와주시면 감사하겠습니다,,,ㅠ 살려주세요
public void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mBRBattery, filter);
}
public void onPause() {
super.onPause();
unregisterReceiver(mBRBattery);
}
BroadcastReceiver mBRBattery = new BroadcastReceiver() {
int Count = 0;
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Count++;
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
onBatteryChanged(intent);
}
}
public void onBatteryChanged(Intent intent) {
int plug, status, scale, level;
String sPlug = "";
String sStatus = "";
Intent intent_2 = new Intent(AndroidFirst.this, intent.class);
scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
ratio = level * 100 / scale;
noti.number = ratio;
noti.flags = Notification.FLAG_ONGOING_EVENT;
intent_2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent content = PendingIntent.getActivity(
AndroidFirst.this, 0, intent_2, 0);
noti.setLatestEventInfo(AndroidFirst.this, "Battery ratio",
str, content);
str = String.format("%d%%",ratio);
mNotiManager.notify(AndroidFirst.NAPNOTI, noti);
}
};
아무것도 모르는 제 생각에는 실행중이 상태를 그대로 가져가면 될것같은데....아닌가요?ㅎ 그럼 리소스를 너무 먹나요 ㅎ
아님 백그라운드에서 계속 Intent.ACTION_BATTERY_CHANGED 이걸 확인해서 처리를 해야하는데 ㅎㅎ
어렵네요