티스토리 뷰
통지
상태바에 프로그램 정보를 출력한다.
ClientTest.java (소켓프로그램 아님) ClientTest.zip(이클립스 프로젝트)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
package kr.co.company.clienttest; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import android.annotation.TargetApi; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Build; import android.os.Bundle; import android.os.StrictMode; import android.telephony.SmsMessage; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class ClientTest extends Activity { public static final int NAPNOTI = 1; // 통지 객체 구분 ID NotificationManager mN; @TargetApi(Build.VERSION_CODES.GINGERBREAD) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mN = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); // mN.cancelAll() 통지 전체 해제 Button btn = (Button)findViewById(R.id.button); btn.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { v.postDelayed(new Runnable() { public void run() { Notification noti = new Notification(R.drawable.ic_launcher, "일어나세요", System.currentTimeMillis()); noti.defaults |= Notification.DEFAULT_SOUND; noti.flags |= Notification.FLAG_INSISTENT; Intent intent = new Intent(ClientTest.this, NapEnd.class); // 상태바를 드래그하고 정보를 클릭했을때 새창에서 보여줄 창 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent content = PendingIntent.getActivity(ClientTest.this, 0, intent, 0); noti.setLatestEventInfo(ClientTest.this, "기상시간", "일어나세요!!!", content); // 상태바를 드래그했을때 보여줄 내용 mN.notify(ClientTest.NAPNOTI, noti); } }, 1000*5); // 5초 후 실행 } }); } } |
5초후에 통지하도록 했지만 바로 하고 싶으면 49~56번 줄을 바로 실행시키면 된다. Intent 불필요하면 Manifest.xml 에서 Intent 관련 Activity(24~30번 줄)를 제거하면 된다.
위 에서 진동으로 하고 싶으면 50번 줄에 DEFAULT_VIBRATE 를 OR 연산자로 추가,
<uses-permission android:name="android.permission.VIBRATE"/> 권한추가 해야 한다.
NapEnd.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package kr.co.company.clienttest;
import android.os.Bundle; import android.view.View; import android.widget.Button; import android.app.Activity; import android.app.NotificationManager; public class NapEnd extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.napend); NotificationManager NM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); NM.cancel(ClientTest.NAPNOTI); Button btn = (Button)findViewById(R.id.end); btn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { finish(); } }); } } |
Manifest.xml (자식 Activity 등록)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="kr.co.company.clienttest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="kr.co.company.clienttest.ClientTest" 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=".NapEnd" android:label="일어나세요 용사님"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest> |
실행화면 (실행하고 알람버튼 눌러 5초 후에 상태바에 안드로이드 아이콘 보여줌)
실행하고 알람버튼을 누르면 5초 후 상태바에 안드로이드 그림이 나오면서 알람이 울린다.
상태바를 아래로 드래그하면 아래 그림처럼
위 그림에서 기상시간을 누르면 알 화면(Intenet) 가 보인다.