[안드로이드] 노티피케이션 관리하기
- 프로그래밍 정보
- 2010. 9. 21.
반응형
읽기전에 손가락 한번 클릭~ >_<
고마워요 ~ Chu ~ ♥
이전글 - 상태바로 통보하기 에서 이어지는 글 입니다.
노티피케이션 관리
노티피케이션 매니저는 모든 노티피케이션을 관리하는 서비스이며, 노티피케이션 매니저의 참조를 얻어야 사용할 수 있다고 했습니다.
상태바 전송을 위해 노티피케이션 매니저의 notify(int, Notification) 메소드로 노티피케이션 객체를 파라미터로 전달해야 합니다.
첫번째 인자는 노티피케이션의 고유 ID 이고, 두번째는 노티피케이션 객체를 뜻합니다.
이 ID 는 노티피케이션 업데이트 , 사용자가 정의된 인텐트를 통해 어플리케이션으로 돌아올 때, 액션 선택을 위해 필수적인 요소입니다.
사용자가 통보를 받은 후 상태바에서 없애기 위해서는 노티피케이션 객체에 ' FLAG_AUTO_CANCEL ' 플래그를 추가해야 합니다. 또는 cancel(int) 메소드로 노티피케이션 ID를 전달하여 없앨 수도 있으며, cancelAll() 메소드를 호출하여 모두 없앨수도 있지요.
노티피케이션 생성
노티피케이션 객체는 표시되는 노티피케이션 메시지와 진동, 불빛 등의 정보를 설정하는데, 다음과 같은 것들이 필요합니다.
◆ 상태바에 표시될 아이콘
◆ 타이틀과 메시지 ( 커스텀 뷰가 아닐때만 )
◆ 노티피케이션이 선택될 때 필요한 Pending Intent
◆ 타이틀과 메시지 ( 커스텀 뷰가 아닐때만 )
◆ 노티피케이션이 선택될 때 필요한 Pending Intent
선택사항으로 다음과 같은 것들을 추가할 수도 있습니다.
◆ 상태바의 티커(ticker) 메시지
◆ 사운드
◆ 진동
◆ 불빛 ( 플래시 라이트 )
◆ 사운드
◆ 진동
◆ 불빛 ( 플래시 라이트 )
새로운 노티피케이션 시작을 위해선 Notification(int, CharSequence, long) 이라는 생성자와 setLatestEventInfo(Context, CharSequence, CharSequence, PendingIntent) 메소드를 사용합니다.
여기에서 노티피케이션에 대한 모든 설정을 합니다.
예제 한번 보시죠.
이제 노티피케이션이 생성 되었습니다.
노티피케이션 업데이트 하기
어플리케이션에서 이벤트가 발생함에 따라 상태바의 정보를 업데이트를 해야되겠지요... 예를들어, 문자 메시지가 수신되면 읽지않은 신규 문자의 수를 보여주기 위해 이미 존재하는 노티피케이션을 업데이트 할 수 있습니다.
노티피케이션을 업데이트 하는것은 , 노티피케이션 매니저에 새로운 노티피케이션을 추가하는것보다 효율적입니다. 각각의 노티피케이션은 정수 ID를 가지고 고유하게 식별되기 때문에, 새로운 값으로 setLatestEventInfo() 메소드를 호출하여 노티피케이션을 수정하고 적절하게 값을 변경 한 후 다시 notify() 메소드를 호출하는 구조입니다.
컨텍스트, 메시지 타이틀과 텍스트를 빼고선 멤버필드를 통해 각각의 속성을 정의할 수 있습니다.
타이틀과 텍스트에 대한 새로운 값으로 노티피케이션을 업데이트 한다면, 항상 그 텍스트 메시지를 변경해야 합니다.
( 만약 , 커스텀뷰를 사용한다면 타이틀과 텍스트 업데이트는 아무런 영향을 주지 않겠네요~ )
사운드 추가하기
노티피케이션 사운드 또는 어플리케이션의 지정된 사운드를 사용하여 사용자에게 통보할 수 있습니다.
디폴트 사운드를 쓰려면, 디폴트 필드에 ' DEFAULT_SOUND ' 플래그를 추가해야 합니다.
notification.defaults |= Notification.DEFAULT_SOUND;
기본이 아닌 다른 사운드를 쓰려면 사운드 필드에 Uri를 전달해야 하는데요, 예를들어 SD카드에 있는 오디오 파일 설정은
notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
또, 오디오 파일이 내부 미디어스토어(MediaStore) 컨텐츠 프로바이더에서 선택된다면
notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
이 경우, 파일 ("6") 에 대한 ID 를 알고있고 Uri 끝에 붙여집니다.정확한 ID를 모른다면 ' 컨텐츠 리졸버' 를 사용하여 , 미디어스토어에서 사용가능한 모든 미디어를 얻어와야 하겠습니다.
만일 사용자가 응답할 때까지.. 또는 노티피케이션이 취소될 때 까지 사운드가 반복되게 하려면 플래그 필드에 ' FLAG_INSISTENT ' 를 추가하면 됩니다.
진동 추가하기
디폴트 진동 패턴 또는 새롭게 지정한 진동 패턴으로, 어쨋든 진동으로 통보할 수도 있습니다.
진동은 기본적으로 무작정 부르르르 떨리는것이 아니라, 밀리초 단위의 값으로써 진동-멈춤-진동-멈춤 과 같은 일정 패턴으로 만들어져 있습니다.
진동의 디폴트 패턴을 쓰려면 디폴트 필드에 ' DEFAULT_VIBRATE ' 를 추가합니다
notification.defaults |= Notification.DEFAULT_VIBRATE;
직접 지정한 진동 패턴을 정의하려면 ' vibrate ' 필드에 long 값의 배열로 지정해야 합니다.
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
notification.vibrate = vibrate;
long배열은 1/1000 초 단위의 진동 길이 패턴을 지정하는데요, 첫 값은 시작전의 기다리는 시간이고, 두번째는 첫 진동의 길이, 세번짼 그다음의 진동이 까진 길이..... 순으로 진행됩니다.
중요한 것은 이 패턴은 충분히 길어질 수 있지만, 반복되도록 설정할 수는 없다는 것입니다.
이제 노티피케이션을 생성하고 사운드를 추가하고 진동을 추가할 수 있습니다.
다음 포스트에서 불빛으로 통보하는 것에 대한 포스팅 해보지요~ ㅎ
반응형