안드로이드 노티피케이션
프로그래밍/Android 2013. 8. 25. 12:08안드로이드 노티피케이션
토스트 노티피케이션
- "파일이 저장되었습니다." 와 같은 짧은 텍스트 메시지를 표시하는데에는 최선이다.
- 사용자와 상호작용을 할 수 없다.
- 토스트 기초
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText( context, text, duration);
toast.show();
- 위치 설정
toast.setGravity( Gravity.TOP | Gravity.LEFT, 0, 0);
- 커스텀 토스트 뷰 생성
1. toast_layout.xml 파일에 레이아웃 정의
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:id=”@+id/toast_layout_root”
android:orientation=”horizontal”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:padding=”10dp”
android:background=”#DAAA” >
<ImageView android:id=”@+id/image”
android:layout_width=”wrap_content”
android:layout_height=”fill_parent”
android:layout_marginRight=”10dp”
/>
<TextView android:id=”@+id/text”
android:layout_width=”wrap_content”
android:layout_height=”fill_parent”
android:textColor=”#FFF”
/>
</LinearLayout>
2. JAVA 코드
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate( R.layout.toast_layout,
(ViewGroup)findViewById( R.id.toast_layout_root));
ImageView image = (ImageView)layout.findViewById( R.id.image);
image.setImageResource( R.drawable.android);
TextView text = (TextView) layout.findViewById( R.id.text);
text.setText("Hello! This is a custom toast!");
Toast toast = new Toast(getApplicationContext());
toast.setGravity( Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView( layout);
toast.show();
상태바 노티피케이션
- 디바이스가 절전상태에 있는 동안 백그라운드로부터 생성될 수 있다.
- NotificationManager 는 모든 노티피케이션을 실행하고 관리하는 안드로이드 시스템 서비스이다.
// 노티피케이션 매니저 얻기
NotificationManager mNotificationManager = (NotificationManager)getSystemService( Context.NOTIFICATION_SERVICE);
// 노티피케이션 생성
int icon = R.drawable.notification_icon;
CharSequence tickerText = "Hello";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
// 노티피케이션 확장 메시지와 인텐트 정의
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent( this, MyClass.class); // 두번째 인자에 노티피케이션 클릭시 이동할 Activity 클래스를 적어준다.
PendingIntent contentIntent = PendingIntent.getActivity( this, 0, notificationIntent, 0); // 노티피케이션이 선택되었을때의 처리
notification.setLatestEventInfo( context, contentTitle, contentText, contentIntent); // 노티피케이션 업데이트와 관련있다.
// 노티피케이션 전달
private static final int HELLO_ID = 1;
mNotificationManager.notify( HELLO_ID, notification);
노티피케이션 업데이트
notification.setLatestEventInfo( context, contentTitle, contentText, contentIntent); // 노티피케이션 업데이트와 관련있다.
사운드 추가하기
notification.defaults |= Notification.DEFAULT_SOUND;
notification.sound = Url.parse("file:///sdcard/notification/ringer.mp3");
또는 builder.setSound( Url.parse("file:///sdcard/notification/ringer.mp3"));
진동 추가하기
notification.defaults |= Notification.DEFAULT_VIBRATE;
// 진동을 추가하기 위해서는 진동 퍼미션이 있어야 한다.
// AdroidManifest.xml 에 아래 퍼미션을 추가해 줍니다.
<uses-permission android:name="android.permission.VIBRATE"/>
사용자 진동 패턴
long[] vibrate = {0, 100, 200, 300); // 첫번째는 진동 시작전 기다리는 시간, 진동시간, 대기시간, 진동시간, 대기시간... 반복된다.
발광 추가가하기
notification.defaults |= Notification.DEFAULT_LIGHTS;
notification.lefARGB = 0xff00ff00;
notification.ledOnMS = 300;
notification.ledOffMS = 1000;
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
기타
FLAG_AUTO_CANCEL : 노티피케이션이 선택된 이후, 자동으로 취소된다.
FLAG_INSISTENT : 사용자가 응답할때까지 오디오를 반복재상시킨다.
FLAG_ONGOING_EVENT : Ongoing 타이틀 아래의 노티피케이션을 그룹화
FLAG_NO_CLEAR : 노티피케이션이 CLEAR 버튼에 의해 없어져서는 안된다는것을 가리킨다.
number 필드 : 노티피케이션 우측 상단에 보여지는 오버레이된 숫자
iconLevel 필드 : ?
커스텀 확장 뷰
1. custom_notification_layout.xml 파일 생성
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”horizontal”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:padding=”3dp”
>
<ImageView android:id=”@+id/image”
android:layout_width=”wrap_content”
android:layout_height=”fill_parent”
android:layout_marginRight=”10dp” />
<TextView android:id=”@+id/text”
android:layout_width=”wrap_content”
android:layout_height=”fill_parent”
android:textColor=”#000” />
</LinearLayout>
2. java 코드
RemoteView contentView = new RemoteView(getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource( R.id.image, R.drawable.notification_image);
contentView.setTextViewText( R.id.text, "Hello, this message is in a custom expanded view");
notification.contentView = contentView;
Intent notificationIntent = new Intent( this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity( this, 0, notificationIntent, 0); // 노티피케이션이 선택되었을때의 처리
notification.contentIntent = contentIntent;
mNotification.notify( CUTOM_VIEW_ID, notification);
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 레이아웃 (0) | 2013.08.25 |
---|---|
안드로이드 스타일과 테마 적용하기 (0) | 2013.08.25 |
Android 커스텀 다이얼로그 생성 (0) | 2013.08.23 |
Android UI 메뉴 생성 (0) | 2013.08.23 |
안드로이드 UI 다이얼로그 생성 1 (0) | 2013.08.23 |