1. 程式人生 > >android 通知Notification的使用小例項(振動,燈光,聲音)

android 通知Notification的使用小例項(振動,燈光,聲音)

效果圖:

MainActivity:

import java.io.File;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

	private Button sendNotice;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		sendNotice = (Button) findViewById(R.id.send_notice);
		sendNotice.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.send_notice:
			NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

			//建立notification物件來儲存通知所需的各種資訊
			//第一個引數為圖示
			//第二個引數用於指定通知的ticker內容
			//第三個引數用於指定通知被建立的時間,以毫秒為單位
			Notification notification = new Notification(
					R.drawable.ic_launcher, "This is ticker text",
					System.currentTimeMillis());

			//此處設定點選的activity的跳轉
			//第一個引數依舊是Context
			//第二個引數一般用不到,所以用0表示取預設值
			//第三個引數就是一個Intent物件
			//FLAG_CANCEL_CURRENT:如果當前系統中已經存在一個相同的PendingIntent物件,
			// 那麼就將先將已有的PendingIntent取消,然後重新生成一個PendingIntent物件。
			Intent intent = new Intent(this, NotificationActivity.class);
			PendingIntent pi = PendingIntent.getActivity(this, 0, intent,
					PendingIntent.FLAG_CANCEL_CURRENT);

			//設定通知的佈局
			//第一個引數為Context
			//第二個引數用於指定通知的標題
			//第三個引數用於指定通知的徵文內容
			//第四個引數用於傳入PendingIntent物件,用於設定點選效果
			notification.setLatestEventInfo(this, "This is content title",
					"This is content text", pi);

//			//設定在通知發出的時候的音訊
//			Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
//			notification.sound = soundUri;
//
//			//設定手機震動
//			//第一個,0表示手機靜止的時長,第二個,1000表示手機震動的時長
//			//第三個,1000表示手機震動的時長,第四個,1000表示手機震動的時長
//			//此處表示手機先震動1秒,然後靜止1秒,然後再震動1秒
//			long[] vibrates = {0, 1000, 1000, 1000};
//			notification.vibrate = vibrates;
//
//			//設定LED指示燈的閃爍
//			//ledARGB設定顏色
//			//ledOnMS指定LED燈亮起的時間
//			//ledOffMS指定LED燈暗去的時間
//			//flags用於指定通知的行為
//			notification.ledARGB = Color.GREEN;
//			notification.ledOnMS = 1000;
//			notification.ledOffMS = 1000;
//			notification.flags = Notification.FLAG_SHOW_LIGHTS;

			//如果不想進行那麼多繁雜的這隻,可以直接使用通知的預設效果
			//預設設定了聲音,震動和燈光
			notification.defaults = Notification.DEFAULT_ALL;

			//使用notify將通知顯示出來
			//第一個引數是id,要爆炸為每個通知所指定的id是不同的
			//第二個引數就是Notification物件
			manager.notify(1, notification);
			break;
		default:
			break;
		}
	}

}
 

activity_main:

<LinearLayout 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"
    android:orientation="vertical" >

	<Button 
	    android:id="@+id/send_notice"
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:text="發出通知"
	    />
    
</LinearLayout>

NotificationActivity:

import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;

public class NotificationActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.notification_layout);

		//開啟NotificationActivity這個Activity後把通知給關掉
		NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manager.cancel(1);
	}

}
 

notification_layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
	
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="24sp"
        android:text="這是通知點選後的介面"
        />
    
</RelativeLayout>
 

AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.notificationtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.notificationtest.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=".NotificationActivity" >
        </activity>

    </application>

</manifest>
最後附上原始碼: