public class NotiT extends Activity {
private Button b1, b2, b3, b4, b5, b6;
private NotificationManager nm;
private Notification n1, n2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
n1 = new Notification(R.drawable.coffee, "퇴근할 시간입니다.",
System.currentTimeMillis());
n2 = new Notification(R.drawable.dog, "일어날 시간이예요~",
System.currentTimeMillis());
b1 = (Button)findViewById(R.id.Button01);
b2 = (Button)findViewById(R.id.Button02);
b3 = (Button)findViewById(R.id.Button03);
b4 = (Button)findViewById(R.id.Button04);
b5 = (Button)findViewById(R.id.Button05);
b6 = (Button)findViewById(R.id.Button06);
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Button01: n1(); break;
case R.id.Button02: n2(v); break;
case R.id.Button03: n3(); break;
case R.id.Button04: n4(); break;
case R.id.Button05: n5(); break;
case R.id.Button06: n6(); break;
}
}
};
b1.setOnClickListener(listener);
b2.setOnClickListener(listener);
b3.setOnClickListener(listener);
b4.setOnClickListener(listener);
b5.setOnClickListener(listener);
b6.setOnClickListener(listener);
}
private void n1(){
//n1을 띄우세요..
Intent intent = new Intent(this, NotiT.class);
PendingIntent pi = PendingIntent.getActivity(
this, 0, intent, 0);
n1.setLatestEventInfo(
this, "노티 제목", "노티 내용", pi);
nm.notify(n1.number++, n1);
}
private void n2(View v){
//3초 후에 띄우세요. ( 24시간/1년 후에 띄우세요. )
Runnable action = new Runnable() {
@Override
public void run() {
n1();
}
};
v.postDelayed(action, 3000);
}
private void n3(){
//custom.xml로 정의한 사용자 정의 notification을 띄워오세요.
Intent intent = new Intent(this, NotiT.class);
PendingIntent pi = PendingIntent.getActivity(
this, 0, intent, 0);
n2.contentIntent = pi;
RemoteViews rv = new RemoteViews(getPackageName(), R.layout.custom);
n2.contentView = rv;
nm.notify(1, n2);
}
private void n4(){
//다른 구성요소(ex:다른 Activity 호출) 호출
Intent intent = new Intent(this, SubActivity.class);
PendingIntent pi = PendingIntent.getActivity(
this, 0, intent, 0);
n2.contentIntent = pi;
RemoteViews rv = new RemoteViews(getPackageName(), R.layout.custom);
n2.contentView = rv;
nm.notify(1, n2);
}
private void n5(){
//public static PendingIntent getActivity (Context context, int requestCode, Intent intent, int flags)
//flags : FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT
Intent intent = new Intent(this, NotiT.class);
PendingIntent pi = PendingIntent.getActivity(
this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
n1.setLatestEventInfo(
this, "테스팅", "PendingIntent옵션 테스팅 Flag", pi);
nm.notify(n1.number++, n1);
//위의 4가지 경우에 대한 각각의 차이점에 대해 알아 올것
}
//다양한 알림 형식(진동,소리,백라이트 | 반복,1회,지움옵션)
private void n6(){
//(1) defaults 옵션 테스팅
//n1.defaults = Notification.DEFAULT_SOUND;
//n1.defaults = Notification.DEFAULT_VIBRATE;
//n1.defaults = Notification.DEFAULT_LIGHTS;
//n1.defaults = Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND;
n1.defaults = Notification.DEFAULT_ALL;
//(2) flags 옵션 테스팅
//n1을 열면 자동으로 titlebar의 아이콘이 없어짐
//n1.flags = Notification.FLAG_AUTO_CANCEL;
//titlebar의 아이콘이 계속 남음(titlebar의 아이콘이 맨 뒤로 이동)
//n1.flags = Notification.FLAG_FOREGROUND_SERVICE;//지우기 버튼이 없음
//titlebar의 아이콘이 계속 남음(titlebar의 아이콘이 맨 앞으로 이동)
//n1.flags = Notification.FLAG_NO_CLEAR; //지우기 버튼이 없음
//n1.flags = Notification.FLAG_ONGOING_EVENT;//열면 '진행중'
//n1.flags = Notification.FLAG_ONLY_ALERT_ONCE;//매번 소리와 진동 출력
n1.flags = Notification.FLAG_SHOW_LIGHTS; //LED불빛을 계속 깜빡거림
//n1.flags = Notification.FLAG_INSISTENT;//반복
Intent intent = new Intent(this, NotiT.class);
PendingIntent pi = PendingIntent.getActivity(
this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
n1.setLatestEventInfo(
this, "테스팅", "알림 형식 테스팅", pi);
nm.notify(n1.number++, n1);
//위의 defaults과 flags옵션에 대한 각각 경우를 검증하시요.
}
}
'스마트폰 > 안드로이드' 카테고리의 다른 글
다이나믹 레이아웃 공부. (0) | 2011.05.13 |
---|---|
Toast 토스트 공부. (0) | 2011.05.13 |
명시적 intent 공부. (0) | 2011.05.13 |
LifeCycle 공부. (0) | 2011.05.13 |
묵시적 intent 공부. (0) | 2011.05.13 |