Intent.ACTION_BATTERY_CHANGED 이거 이용해서 notification에 배터리 퍼센트 표시해주는거
연습삼아 만드는데 쉬운것같으면서도 초보라 어렵네요 ㅎ
지금 단순한 동작은 되는데 이게 어플을 실행해서 그 액티비티에 있으면 제대로 잘 바뀌는데(notification)
홈키든 백키든 다른화면으로 나가버리면 바뀌지를 않네요 어떤부분이 문제가 있는건가요 br로 바뀌면 notification해주는식으로
코드는 만들어 놨습니다. 책만 좀 보다가 처음 프로그램 만드는거라 개판일겁니다. 조언좀 부탁드립니다
package exam.AndroidFirst;
import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import exam.AndroidFirst.*;
public class AndroidFirst extends Activity {
static final int NAPNOTI = 1;
NotificationManager mNotiManager;
String str;
int ratio = 0;
Notification noti = new Notification(R.drawable.icon,
"Battery ratio",System.currentTimeMillis());
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; // barrtery ratio
noti.number = ratio;
noti.flags = Notification.FLAG_ONGOING_EVENT;
//noti.flags = Notification.FLAG_NO_CLEAR;
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);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mNotiManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Button btn = (Button)findViewById(R.id.start);
Button btn2 = (Button)findViewById(R.id.end);
btn.setOnClickListener(new Button.OnClickListener() { // battery ratio start
public void onClick(View v) {
Toast.makeText(AndroidFirst.this, "HI!", 0).show();
noti.number = ratio;
noti.flags = Notification.FLAG_ONGOING_EVENT;
//noti.flags = Notification.FLAG_NO_CLEAR;
Intent intent = new Intent(AndroidFirst.this, intent.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent content = PendingIntent.getActivity(
AndroidFirst.this, 0, intent, 0);
noti.setLatestEventInfo(AndroidFirst.this, "Battery ratio",
str, content);
mNotiManager.notify(AndroidFirst.NAPNOTI, noti);
}
});
btn2.setOnClickListener(new Button.OnClickListener() { // cancel button
public void onClick(View v) {
Toast.makeText(AndroidFirst.this, "BYE!", 0).show();
mNotiManager.cancel(AndroidFirst.NAPNOTI);
finish();
}
});
}
}