2011년 5월 21일 토요일

Android Notifications

Introduction
Notification는 사용자가 관심 있을만한 Message을 Push 해주는 기능입니다. 노티 기능을 사용하고 있는 사용자에게 새로운 이메일이 왔을 때 메세지를 Status bar에 띄어주거나 소리 또는 진동을 줄 수도 있습니다.

Step 1: Notification Service 가져오기

//Get the Notification Service
NotificationManager notifier = (NotificationManager)MainActivity.this.
getSystemService(Context.NOTIFICATION_SERVICE);


Step 2: Notification 객체 초기화

//Get the icon for the notification
int icon = ViewHelper.findDrawableId(MainActivity.this, "push");
Notification notification = new Notification(icon,"Simple Notification",System.currentTimeMillis());

“push”는 icon이름으로 res/drawable 밑에 “push.png”로 있다고 가정하였습니다.

Step 3: Setup the Intent to open an Activity

Intent toLaunch = new Intent(MainActivity.this,MainActivity.class);
PendingIntent contentIntent =
PendingIntent.getActivity(MainActivity.this, 0, toLaunch, 0);

Notification을 클릭했을 때 Activity을 호출 할 필요가 없다면 Null을 전달 합니다.

Step 4: Set the Notification’s Information

//Set the Notification Info
notification.setLatestEventInfo(MainActivity.this, "Hi!!", "This is a simple notification", contentIntent);

“Hi!”는 Status bar에 보이게 되고, Status bar을 드래그 하면 상세 내용으로 “This is a simple notification”이 보여집니다.

Step 5: Setting Notification Flags

//Setting Notification Flags
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.flags |= Notification.DEFAULT_SOUND;

노티 사운드는 시스템 기본 소리로, 노티가 자동 Cancel 되게 됩니다.

Step 6: Notification 전달

//Send the notification
notifier.notify(0x007, notification);

“0x007”는 노티의 유니크 ID 입니다. 이 ID가 같을 경우 새로운 노티가 오게되면 업데이트 되게 됩니다.

//Adding the Custom Sound
notification.audioStreamType = AudioManager.STREAM_NOTIFICATION;
String uri = "android.resource://org.openmobster.notify.android.app/"+
MainActivity.this.findSoundId(MainActivity.this, "beep");
notification.sound = Uri.parse(uri);

위 코드는 Custom Sound을 사용하는 방식을 보여줍니다. “beep.wav” 파일이 있다는 가정에서 작성되었습니다.

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...