반응형

이전 Notification 에서 사운드와 진동을 추가하고 알림창을 클릭했을 때 새로운 액티비티로 전환되록 하여 알림의 세부내용을 확인하도록 하는 소스코드입니다.



버튼을 클릭하면 상태표시줄에 알림(Notification)이 발생하고 사운드와 진동(3초)이 발생합니다. 알림창을 확인(클릭)하면 새로운 액티비티로 전환하며 알림은 자동 삭제됩니다.

 


메인화면                                      알림 발생(상태표시줄)                  상태표시줄에 남아있는 알림 아이콘

    

  

 



상태바를 드래그하면 보이는 알림창      상태바를 클릭(알림 확인)               새로운 액티비티(ByNotificationActivity)

    





Layout 파일

 activity_main.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="${relativePackage}.${activityClass}" >


    <Button android:id="@+id/button"

        android:layout_width="match_parent"

        android:layout_height="50dp"

        android:text="generate Notification"

        android:onClick="mOnClick"/>


</RelativeLayout>


 



소스파일

 

 MainActivity.java

public class MainActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

//Button을 클릭했을 때 자동으로 호출되는 callback method....

public void mOnClick(View v){

switch( v.getId() ){

case R.id.button:

//알림(Notification)을 관리하는 NotificationManager 얻어오기

NotificationManager manager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

//알림(Notification)을 만들어내는 Builder 객체 생성

//만약 minimum SDK가 API 11 이상이면 Notification 클래스 사용 가능

//한번에 여러개의 속성 설정 가능

NotificationCompat.Builder builder= new NotificationCompat.Builder(this)

.setSmallIcon(android.R.drawable.ic_dialog_alert)  //상태표시줄에 보이는 아이콘 모양

.setTicker("Notify")                                     //알림이 발생될 때 잠시 보이는 글씨

.setContentText("Title")                                //알림창에서의 제목

.setContentText("Contents");                          //알림창에서의 글씨

//상태바를 드래그하여 아래로 내리면 보이는 알림창(확장 상태바)의 아이콘 모양 지정

builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_dialog_info));

//알림에 사운드 기능 추가

Uri soundUri= RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION);

builder.setSound(soundUri);

//알림에 진동 기능 추가 

//진동 추가시에는 AndroidManifest 파일에 uses-permission 을 통해 사용권한 받아야함  "android.permission.VIBRATE"

builder.setVibrate(new long[]{0,3000}); // pattern의 첫번째 파라미터는 wait시간, 두번째는 진동시간(단위 ms)

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

//알림을 확인했을 때(알림창 클릭) 다른 액티비티(ByNitificationActivity) 실행

//클릭했을 때 시작할 액티비티에게 전달하는 Intent 객체 생성

Intent intent= new Intent(this, ByNotificationActivity.class);

//클릭할 때까지 액티비티 실행을 보류하고 있는 PendingIntent 객체 생성

PendingIntent pending= PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);

builder.setContentIntent(pending);   //PendingIntent 설정 

builder.setAutoCancel(true);         //클릭하면 자동으로 알림 삭제

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

Notification notification= builder.build();    //Notification 객체 생성

manager.notify(0, notification);    //NotificationManager가 알림(Notification)을 표시, id는 알림구분용           

break;

}

}

}

   




두번째 액티비티의 소스파일과 레이아웃파일


 ByNotificationActivity.java

 activity_by_notification.xml

 public class ByNotificationActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_by_notification);

}

}




 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="${relativePackage}.${activityClass}" >


    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="The Activity by Notification" />


</RelativeLayout>



네트워크 사용하기 위해서는 사용 권한(uses-permission)이 필요합니다.

여러분 프로젝트의 메니페스트 파일에 퍼미션을 추가합니다.


 AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.kitesoft.notification"

    android:versionCode="1"

    android:versionName="1.0" >


    <uses-sdk

        android:minSdkVersion="11"

        android:targetSdkVersion="19" />


    <!-- 진동사용 허가 -->

    <uses-permission android:name="android.permission.VIBRATE" />


    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:name=".ByNotificationActivity"

            android:label="@string/title_activity_by_notification" >

        </activity>

    </application>


</manifest>

 

반응형

+ Recent posts