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

+ Recent posts