Beacon在可穿戴設備中的應用:安卓藍牙第二篇
可穿戴技術(shù)正在騰飛,應用形式日新月異,從智能手表到各式運動(dòng)手環(huán),甚至還有智能假發(fā)!而B(niǎo)luetooth Smart就在這一切變革的中心。這是Android Wear操作系統系列文章的第二篇,將幫助開(kāi)發(fā)者探索如何利用Android Wear為用戶(hù)打造最佳的“腕上體驗”(當然也包括耳部、頭上、脖子上佩戴的可穿戴設備體驗)。第一篇中,小碼哥講述了打造Android Wear體驗所涉及的標準和延展安卓通知等基礎問(wèn)題。第二篇中小碼哥將繼續和大家討論如何創(chuàng )建在可穿戴設備上獨立運行的APP。
本文引用地址:http://dyxdggzs.com/article/201706/352592.htmAndroidWear APP
你也許會(huì )想,既然拓展通知就能實(shí)現很多功能,為什么還要在可穿戴設備上開(kāi)發(fā)APP呢?我們不妨就從這個(gè)問(wèn)題出發(fā)。通過(guò)開(kāi)發(fā)AndroidWearAPP,我們可以更好地控制用戶(hù)界面,還能像智能手機一樣創(chuàng )建自定義的UI布局。此外,還能實(shí)現雙向設備通信,讓可穿戴設備和智能手機之間能夠相互發(fā)送信息。
AndroidWear APP能夠脫離智能手機APP獨立運行,但開(kāi)發(fā)者需要注意第一篇中提到的智能手機和可穿戴設備的相對能力差異,利用更強大的智能手機處理需要多方資源支持的復雜操作。舉例來(lái)說(shuō),持續掃描Beacon就需要比較多的資源,因此小碼哥決定把這一工作交給智能手機處理。探測到Beacon后,手機會(huì )將相關(guān)的展品信息發(fā)送給智能手表上的Android Wear APP,用戶(hù)就可以在智能手表屏幕上瀏覽這些信息了。
AndroidWear API
GooglePlay Services 庫提供了以下主要的Android Wear API,在可穿戴博物館導覽APP中都有用到。
DataApi
這一API能夠將所有與Android Wear連接的節點(diǎn)自動(dòng)進(jìn)行數據同步,在博物館導覽APP中指的就是智能手機和智能手表之間。
一般通過(guò)PutDataRequest類(lèi)創(chuàng )建DataItem對象,制定特定路徑,以確認通過(guò)同步過(guò)程接收的節點(diǎn)數據類(lèi)型。然后只需要調用Wearable.DataApi.putDataItem,將數據交給API同步。
節點(diǎn)使用DataListener接口,通過(guò)onDataChanged方法接收同步的數據。
MessageApi
MessageApi讓開(kāi)發(fā)者能夠從一個(gè)節點(diǎn)向另一個(gè)節點(diǎn)發(fā)送字節數組。MessageApi的使用通常作為一種遠程過(guò)程調用(Remote ProcedureCall,簡(jiǎn)稱(chēng)RPC)機制。Capability API可用來(lái)發(fā)現能夠理解并處理特定類(lèi)型信息的節點(diǎn)。調用Wearable.MessageApi.sendMessage在藍牙連接中發(fā)送信息,實(shí)施了MessageListener 界面的接收節點(diǎn)即會(huì )通過(guò)onMessageReceived方法被調用。
CapabilityApi
APP中可以在名為wear.xml的源文件中注冊處理特定類(lèi)型信息的功能。“功能”是由字符串值定義的,字符串值是開(kāi)發(fā)者創(chuàng )建并通過(guò)Capability API引用。下圖是小編為博物館導覽智能手機APP創(chuàng )建的wear.xml文件。
NodeApi
這一API將會(huì )在可穿戴網(wǎng)絡(luò )中提供互聯(lián)節點(diǎn)訪(fǎng)問(wèn)和相關(guān)信息。
文章后面將提到這些API的例子。
AndroidWear 博物館導覽用戶(hù)界面(User Interface, UI)
小編需要一個(gè)和第一篇中一樣使用延展通知創(chuàng )建的多頁(yè)面、互動(dòng)UI。GridViewPager類(lèi)為此提供了最佳的基礎。當靠近展品時(shí),一共需要展示三個(gè)頁(yè)面:應用標題頁(yè)、帶有“喜歡”反饋按鈕的展品名稱(chēng)頁(yè)、展品信息頁(yè)。APP完成后的截屏如下圖:
如果附近沒(méi)有Beacon,可穿戴APP就只顯示標題頁(yè),而無(wú)法進(jìn)入展品信息頁(yè)。如果智能手機APP探測到了附近的Beacon,則會(huì )立即向可穿戴APP發(fā)送展品照片和簡(jiǎn)介,并展示展品信息頁(yè)。
發(fā)送展品信息至可穿戴設備
小編使用數據層API從智能手機向可穿戴設備傳輸展品圖像和信息。在發(fā)送端(智能手機APP),使用Asset對象形成圖像容器,再使用PutDataMapRequest項啟動(dòng)智能手表同步。然后使用Google Play可穿戴DataApi啟動(dòng)智能手表同步。這里需要注意,數據PutDataRequest中包含一個(gè)時(shí)間戳。因為DataApi會(huì )緩沖數據,但如果較上次同步事件之后沒(méi)有變化則不需要進(jìn)行數據傳輸。
在A(yíng)ndroid Wear APP中實(shí)施DataApi.DataListener界面,處理onDataChanged方法中的數據同步事件。
搞定“喜歡”按鈕
小碼哥想讓可穿戴APP在用戶(hù)按下“喜歡”按鈕之后立即通知智能手機APP,并使用Message API來(lái)完成這一步。此外,還使用Capability API來(lái)確保信息能夠選對智能手機節點(diǎn)。
當用戶(hù)按下“喜歡”的按鈕時(shí),會(huì )發(fā)送一個(gè)包含了路徑的信息,這個(gè)信息代表“將此事件作為“按下喜歡按鍵”處理”,同時(shí)還包含了這個(gè)展品的名稱(chēng)等信息,這個(gè)信息由可穿戴APP發(fā)送到智能手機APP。
智能手機APP中的MessageApi.MessageListener界面通過(guò)調用onMessageReceived 方法接收信息。
總結
今天就先跟大家分享到這里啦!可穿戴網(wǎng)絡(luò )中的Android Wear API加上Bluetooth Smart的節點(diǎn)間低功耗無(wú)線(xiàn)傳輸,Android Wear其樂(lè )無(wú)窮!
評論