티스토리 뷰

안드로이드/프로그래밍

통지, 상태바

에어버스 2015. 2. 7. 14:55

통지
상태바에 프로그램 정보를 출력한다.

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) 가 보인다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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