Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Wear 開發入門——如何創建一個手機與可穿戴設備關聯的通知(Notification)

Android Wear 開發入門——如何創建一個手機與可穿戴設備關聯的通知(Notification)

編輯:關於Android編程

創建通知

為了創建在手機與可穿戴設備中都能展現的通知,可以使用 NotificationCompat.Builder。通過該類創建的通知,系統會處理該通知是否展現在手機或者穿戴設備中。

導入必要的類庫

在開發之前首先需要導入以下類庫

importandroid.support.v4.app.NotificationCompat;
importandroid.support.v4.app.NotificationManagerCompat;
importandroid.support.v4.app.NotificationCompat.WearableExtender;


使用Notification Builder創建通知

v4 support library 庫允許開發者使用最新的通知特性,如action button或者large icons,編譯環境需要在4以上。

使用支持庫開發的通知,需要創建NotificationCompat.Builder實例,發布通知使用notify(),如下代碼所示:

int notificationId = 001;
// Build intent for notification content
Intent viewIntent = new Intent(this,ViewEventActivity.class);
viewIntent.putExtra(EXTRA_EVENT_ID, eventId);
PendingIntent viewPendingIntent =
        PendingIntent.getActivity(this,0, viewIntent,0);

NotificationCompat.BuildernotificationBuilder=
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_event)
        .setContentTitle(eventTitle)
        .setContentText(eventLocation)
        .setContentIntent(viewPendingIntent);

// Get an instance of the NotificationManager service
NotificationManagerCompat notificationManager =
        NotificationManagerCompat.from(this);

// Build the notification and issues it with notification manager.
notificationManager.notify(notificationId,notificationBuilder.build());


當這條通知出現在手機上是,使用者可以指定PendingIntent通過使用setContentIntent()方法觸發這條通知,當通知出現在手機中時,使用者何以向左滑動來銷毀出現的通知。

添加Action Button

除了定義的setcontentintent()主要內容的行為,你可以通過傳遞一個PendingIntent到addaction()方法添加其他行動。

例如,下面的代碼展示了與上面代碼相同類型的通知,但是添加了一個動作在view的上面。

// Build an intent for an action to view a map
Intent mapIntent = new Intent(Intent.ACTION_VIEW);
Uri geoUri = Uri.parse("geo:0,0?q=" + Uri.encode(location));
mapIntent.setData(geoUri);
PendingIntent mapPendingIntent =
        PendingIntent.getActivity(this, 0, mapIntent, 0);

NotificationCompat.Builder notificationBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_event)
        .setContentTitle(eventTitle)
        .setContentText(eventLocation)
        .setContentIntent(viewPendingIntent)
        .addAction(R.drawable.ic_map,
                getString(R.string.map), mapPendingIntent);


在手機上,該action是以button形式附加在notification一起,在穿戴設備中,該action是以一個大按鈕形式出現的,當用戶單擊該按鈕,intent中的內容將在手機中被調起。

指定可穿戴設備獨有的行為

如果希望可穿戴設備中的行為有別於手機,使用WearableExtender.addAction().當使用該方法,穿戴設備中將不再展現使用NotificationCompat.Builder.addAction().的行為,也就是只顯示其在可穿戴設備中。

// Create an intent for the reply action
Intent actionIntent = new Intent(this, ActionActivity.class);
PendingIntent actionPendingIntent =
        PendingIntent.getActivity(this, 0, actionIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);

// Create the action
NotificationCompat.Action action =
        new NotificationCompat.Action.Builder(R.drawable.ic_action,
                getString(R.string.label, actionPendingIntent))
                .build();

// Build the notification and add the action via WearableExtender
Notification notification =
        new NotificationCompat.Builder(mContext)
                .setSmallIcon(R.drawable.ic_message)
                .setContentTitle(getString(R.string.title))
                .setContentText(getString(R.string.content))
                .extend(new WearableExtender().addAction(action))
                .build();


添加Big View

開發者可以插入一個Big View形式的內容進入通知,在手機中,用戶可以通過展開通知來查看該Big View,在可穿戴設備中,該Big View是默認可見的。

添加這種可展開的內容作為通知,使用 NotificationCompat.Builder 對象中的setStyle() 方法,傳遞給實例BigTextStyle 或者 InboxStyle樣式。

例如下面代碼是添加了BigTextStyle 到通知中。

// Specify the 'big view' content to display the long
// event description that may not fit the normal content text.
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
bigStyle.bigText(eventDescription);

NotificationCompat.Builder notificationBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_event)
        .setLargeIcon(BitmapFractory.decodeResource(
                getResources(), R.drawable.notif_background))
        .setContentTitle(eventTitle)
        .setContentText(eventLocation)
        .setContentIntent(viewPendingIntent)
        .addAction(R.drawable.ic_map,
                getString(R.string.map), mapPendingIntent)
        .setStyle(bigStyle);


為通知添加可穿戴設備特性

如果想添加可穿戴設備中特有的特性,如語音輸入等,可以使用NotificationCompat.WearableExtender 類,使用該類分以下幾步。

1 創建WearableExtender實例,設置可穿戴設備特有的特性

2 創建NotificationCompat.Builder實例,設置如前文所述

3 調用extend()方法,傳遞給WearableExtender

4 調用build()創建通知

下面代碼使用 setHintHideIcon()移除通知卡片中的圖標

// Create a WearableExtender to add functionality for wearables
NotificationCompat.WearableExtender wearableExtender =
        new NotificationCompat.WearableExtender()
        .setHintHideIcon(true);

// Create a NotificationCompat.Builder to build a standard notification
// then extend it with the WearableExtender
Notification notif = new NotificationCompat.Builder(mContext)
        .setContentTitle("New mail from " + sender)
        .setContentText(subject)
        .setSmallIcon(R.drawable.new_mail);
        .extend(wearableExtender)
        .build();


如果想在後面讀取特有的特性的值,可以如下代碼所示

NotificationCompat.WearableExtender wearableExtender =
        new NotificationCompat.WearableExtender(notif);
boolean hintHideIcon = wearableExtender.getHintHideIcon();
 

傳送通知

當需要傳遞通知時,使用 NotificationManagerCompat API代替NotificationManager:

// Get an instance of the NotificationManager service
NotificationManagerCompat notificationManager =
        NotificationManagerCompat.from(mContext);

// Issue the notification with notification manager.
notificationManager.notify(notificationId, notif);


當使用NotificationManager,一些 NotificationCompat.WearableExtender 的特性不能工作

NotificationCompat.WearableExtender wearableExtender =
        new NotificationCompat.WearableExtender(notif);
boolean hintHideIcon = wearableExtender.getHintHideIcon();


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved