為android wear添加通知

為android wear創(chuàng)建通知

NotificationCompat.Builder創(chuàng)建一個可以在手機上發(fā)送到可android wear通知.當用這個類創(chuàng)建通知時,系統(tǒng)負責在合適的時候在手機或者wear上展示這個通知

注意:對于使用RemoteViews來創(chuàng)建布局的通知在wear上僅僅顯示文本和圖標.但是你可以使用自定義的卡片布局創(chuàng)建自定的通知應用運行在wear上.

導入必須的類

build.gradle文件中添加下面這個依賴添加必須的引用包

compile "com.android.support:support-v4:20.0.+"

在導入必要的依賴庫之后就有權限訪問一些包,可以導入以下類

import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import android.support.v4.app.NotificationCompat.WearableExtender;

使用Notification Builder創(chuàng)建通知

上面導入的v4庫允許你創(chuàng)建一個有新特性(操作按鈕,大圖標)的通知,同時兼容android1.6及更高版本.

創(chuàng)建一個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.Builder notificationBuilder =
        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());

當通知到達手機時,用戶可以通過點擊通知獲取通過setContentIntent()該方法設置的PendingIntent.當在wear上時通過向左滑動通知,來打開這個PendingIntent.

添加操作按鈕

除了通過setContentIntent()設置主要內容外,還可以通過addAction()PendingIntent添加其他行為.

下面的代碼展示一個相同的通知,但是添加了一個操作在地圖上查看事件.

// 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);

在手機上,這個操作像是一個附加在通知上的附加按鈕.在wear上當用戶向左滑動通知時這個操作像是一個大按鈕.當用戶觸碰這個操作,此時這個關聯(lián)的PendingIntent會顯示.

提示:如果你的通知包含一個回復操作(比如消息應用),你可以通過wear的語音輸入回復來增強行為.更多信息操作這里

wear上不一樣的操作

如果你想wear上顯示的行為操作和手機上的不一樣,那么可以使用WearableExtender.addaction()這個方法.一旦使用了這個方法,在wear上不會在顯示通過NotificationCompat.Builder.addAction()添加的行為操作.也就是說只有通過WearableExtender.addaction()添加的行為操作會顯示在wear上不會顯示在手機上.

// 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();

添加一個大視圖

通過向通知中添加一個大視圖樣式,可以在通知中插入擴展的文字內容.在手機上用戶可以通過擴展的通知看到這個內容.在wear上這個大視圖內容默認時顯示的.

通過NotificationCompat.Builder的對象調用setStyle()方法添加擴展的內容.該方法可以傳遞BigTextStyle或者InboxStyle的對象實例

舉個例子,下面的代碼向通知中添加一個 NotificationCompat.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(BitmapFactory.decodeResource(
                getResources(), R.drawable.notif_background))
        .setContentTitle(eventTitle)
        .setContentText(eventLocation)
        .setContentIntent(viewPendingIntent)
        .addAction(R.drawable.ic_map,
                getString(R.string.map), mapPendingIntent)
        .setStyle(bigStyle);

注意你可以使用setLargeIcon方法添加一個大圖片到任何一個通知中,然而這些圖標以大背景圖展示在wear上而且不太好看因為這些圖片被放大適應wear的屏幕尺寸.添加一個特殊的圖片到通知上可以參考Add Wearable Features For a Notification,更多關于設計大圖標的通知可以看這里

為通知添加可穿戴的特征

如果你想為你的通知添加可穿戴設備的特征,比如指定其他內容頁面或者讓用戶通過語音輸入指定文字回復.你可以使用NotificationCompat.WearableExtender這個類.

  1. 創(chuàng)建一個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)
        .setBackground(mBitmap);

// 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();

setHintHideIcon()setBackground()這兩個方法僅僅是和NotificationCompat.WearableExtender有關的兩個可見的通知新特性.

Note: The bitmap that you use with setBackground() should have a resolution of 400x400 for non-scrolling backgrounds and 640x400 for backgrounds that support parallax scrolling. Place these bitmap images in the res/drawable-nodpi directory. Place other non-bitmap resources for wearable notifications, such as those used with the setContentIcon() method, in the res/drawable-hdpi directory.

這點提示沒有看懂,好像是說對于400*400分辨率的圖不能滾動,640*400的可以滾動.

如果你以后需要使用可穿戴特性特定選項,你可以使用特定屬性的get方法.下面這個例子調用getHintHideIcon()方法獲取是否隱藏了通知的圖標.

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

Deliver the Notification (交付通知)

當希望交付傳遞一個通知時,需要用NotificationManagerCompat代替NotificationManager

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

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

如果使用framework層的NotificationManager,那么一些NotificationCompat.WearableExtender的特性不能使用.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箫措,更是在濱河造成了極大的恐慌,老刑警劉巖福稳,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡来吩,警方通過查閱死者的電腦和手機蚊俺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門懈涛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泳猬,你說我怎么就攤上這事批钠。” “怎么了得封?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵埋心,是天一觀的道長。 經(jīng)常有香客問我呛每,道長踩窖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任晨横,我火速辦了婚禮洋腮,結果婚禮上箫柳,老公的妹妹穿的比我還像新娘。我一直安慰自己啥供,他們只是感情好悯恍,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伙狐,像睡著了一般涮毫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贷屎,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天罢防,我揣著相機與錄音,去河邊找鬼唉侄。 笑死咒吐,一個胖子當著我的面吹牛,可吹牛的內容都是我干的属划。 我是一名探鬼主播恬叹,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼同眯!你這毒婦竟也來了绽昼?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤须蜗,失蹤者是張志新(化名)和其女友劉穎硅确,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體明肮,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡疏魏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晤愧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛉腌,死狀恐怖官份,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情烙丛,我是刑警寧澤舅巷,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站河咽,受9級特大地震影響钠右,放射性物質發(fā)生泄漏。R本人自食惡果不足惜忘蟹,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一飒房、第九天 我趴在偏房一處隱蔽的房頂上張望搁凸。 院中可真熱鬧,春花似錦狠毯、人聲如沸护糖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫡良。三九已至,卻和暖如春献酗,著一層夾襖步出監(jiān)牢的瞬間寝受,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工罕偎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留很澄,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓锨亏,卻偏偏與公主長得像痴怨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子器予,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內容

  • 原文出處: http://www.androidchina.net/6174.html Notification在...
    木木00閱讀 12,304評論 3 32
  • 一浪藻、什么是Notification? Notification是一種有全局效果的通知,可以顯示在系統(tǒng)通知欄乾翔。以下內...
    douhao1333閱讀 726評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理爱葵,服務發(fā)現(xiàn),斷路器反浓,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 前兩天看了官方的教學視頻,講的是使用NotificationCompact來使用通知.后來網(wǎng)上搜索了關與通知的文章...
    花京院典明閱讀 4,934評論 0 5
  • 轉載自:http://blog.csdn.net/vipzjyno1/article/details/252480...
    HEXG_閱讀 5,809評論 0 2