Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK

穿戴OS和Android通話:通過可穿戴數據層交換信息

by
Difficulty:IntermediateLength:LongLanguages:

Chinese (Traditional) (中文(繁體)) translation by tianyiliang (you can also view the original English article)

當涉及到進行快速、簡單的任務,可穿戴的應用就有優勢了,作為壹個妳手腕上智能手表,它總是會比智能手機或平板電腦更方便放在妳的包中。

但是沒有完美的小工具,沒有人對他們的智能手表的電池續航力持否定態度,或者聲稱它們的智能手機或平板電腦的速度和功能都很快。

為了提供最佳的用戶體驗,您需要發揮設備的優勢。如果您正在開發Wear OS(操作系統,以前稱為Android Wear),那麽您將處於獨特的位置,可以從兩款完全不同的設備中挑選出最佳功能。

基本上,妳可以擁有兩全其美!

在本文中,我將向您展示如何通過打開兩者之間的通信渠道,充分利用Android OS和Wear OS提供的所有功能。壹旦掌上電腦應用程序及其可穿戴設備正在聊天,您就可以根據最適合的設備委派任務 - 無論是將電池密集型任務發到掌上電腦,還是通過顯示它來確保您的應用程序的最重要信息始終在用戶的手腕上易於訪問。

在本文的最後,您將創建壹個掌上電腦和可穿戴應用程序,可以通過可穿戴數據層和MessageClientAPI 交換信息。

什麽是可穿戴數據層?

可穿戴數據層提供對各種客戶機類的訪問,您可以使用這些客戶機類來存儲和檢索數據,而不必使用諸如數據序列化之類的技術細節而煩心。壹旦這些信息在數據層上,手持設備和可穿戴設備都可以訪問這些信息。

在本文中,我們將重點介紹MessageClientAPI,這是壹種可用於將信息發送到可穿戴數據層的單向通信機制。此API對於執行遠程過程調用(RPC)特別方便,例如Activity在配對的手持設備或可穿戴設備上遠程啟動。

我們來看壹個例子:假設您已經創建了壹個導航應用程序。這個應用程序需要a)檢索位置更新,和b)給用戶指示。

l監控設備的位置是壹項密集型任務,可以快速消耗典型可穿戴設備上可用的有限電池。使用MessageClientAPI,您的可穿戴應用程序可以指示其手持對象執行此項工作。 壹旦掌上電腦執行了這個繁重的工作,它可以通過數據層將結果信息發送回穿戴者,這樣您的應用程序就可以獲取所需的信息,而無需從可穿戴設備的剩余電池中取出大塊信息。 

通常,如果您的可穿戴應用程序需要執行需要大量電池或處理能力或復雜用戶交互的任務,則應考慮將此工作卸載到相應的手持應用程序。相比之下,如果您的應用處理特別對時間敏感的信息或用戶可能隨時隨地訪問的內容,則應在可穿戴應用中顯示此信息。

在我們的導航應用示例中,從掌上電腦到可穿戴設備的每個方向推送使得這些信息更易於訪問,特別是對於那些外出並且迷路後絕望的人!

開箱即用的MessageClientAPI是壹個單向的溝通機制,但是妳可以通過創建壹個發送者實現雙向通訊,並在接收器兩個項目的手持設備和可穿戴式模塊,而這正是我們要做的。

創建可穿戴式和手持式模塊

在本文中,我們將創建壹個可穿戴應用程序,該應用程序可以在掌上電腦向數據層發送新消息時識別它。然後,此可穿戴應用將通過檢索此消息並將其顯示為其UI的壹部分來進行響應。

然後,我們將沖洗並重復,創建壹個手持應用程序,監控數據層從其可穿戴對象發送的消息。

通過MessageClientAPI 發送的信息只能由創建它的應用程序訪問。如果系統將識別您的可穿戴設備和掌上電腦屬於同壹應用程序,那麽他們需要具有相同的軟件包名稱,版本代碼和簽名證書。 勾選所有這些框的最簡單方法是創建壹個包含可穿戴模塊和手持模塊的項目: 。

  • 創建壹個名為DataLayer的新項目。
  • 目標Android設備屏幕上,選擇手機和平板電腦並穿戴。點擊下壹步
  • 對於您的手機和平板電腦模塊,請選擇空Activity模板,然後單擊下壹步
  • 對於您的穿戴式模塊,請選擇Blank Wear Activity模板,然後單擊下壹步,然後單擊完成

創建妳的手持應用程序

由於我們正在實施雙向通信,我們的掌上電腦和移動模塊都需要他們自己的收聽者和發送者。首先在我們的手持應用程序中實現此功能。

我將保持簡單並創建壹個UI,TextView它將顯示從數據層檢索到的各種消息,以及壹個按鈕,當點擊該按鈕時,它將自己的消息發送到數據層。  

打開您的移動模塊的activity_main.xml文件,並添加以下內容:

由於我們引用了壹些dimens.xml值,因此我們需要提供這些值的定義:

  • 控制 -點擊移動模塊的res / values目錄。
  • 選擇新建>值資源文件
  • 將該文件命名為dimens.xml,然後單擊確定
  • 添加以下內容:

這給了我們以下用戶界面:

Create the user interface for your projects handheld component

添加您的依賴關系

打開移動模塊的build.gradle文件並添加以下依賴項:

在MainActivity中顯示和發送消息

MainActivity,我們需要執行以下操作:

  1. 讓用戶保持循環!

當用戶點擊Talk to the Wearable按鈕時,需要發生兩件事情:

  • 手持設備向可穿戴設備發送消息。我將使用“ 我收到來自手持設備的消息。
  • 手持設備提供可視確認消息已成功發送。我將使用“ 我向可穿戴設備發送了壹條消息 ”。

當用戶點擊手持設備的對話按鈕時,手持設備將嘗試向數據層發送消息。只有在排隊等待發送到特定設備後,系統才會認為此消息已成功發送,這意味著至少需要有壹個配對的設備可用。

在最好的情況下,用戶點擊Talk to the Wearable,消息就會排隊等候發送,而我們的掌上電腦高歌揚揚地說:“ 我只是給可穿戴設備發送了壹條消息。

但是,如果沒有可穿戴設備可用,則消息不排隊,並且默認情況下,用戶無法確認我們的應用程序甚至嘗試發送消息。 這可能會導致用戶懷疑應用程序是否壞了,所以我也將顯示正在發送短信...。通知,而不管消息是否成功排隊。 

測試此應用程序時,您可能還需要快速連續觸發多個消息。為了清楚每個消息何時排隊等待發送,我為每條消息添加壹個計數器,因此我們的掌上電腦將顯示我剛發送消息給可穿戴設備2我只是向可穿戴設備3發送消息,以此類推。 在連接的另壹端,我們的可穿戴設備將顯示我剛剛收到來自手持設備2 的消息我剛收到來自手持設備3的消息,依此類推。 。

2.顯示收到的消息

在下壹節中,我們將創建壹個MessageService監視數據層並檢索消息。由於我們的服務將在不同的線程上執行其工作,因此它將向我們廣播這些信息MainActivity,然後我們將負責更新UI。

3.定義路徑

您通過MessageClientAPI 傳輸的每條消息都必須包含壹條路徑,該路徑是唯壹標識該消息的字符串,並允許您的應用從連接的另壹端訪問它。

該路徑始終以正斜杠(我使用/ my_path)開頭,並且還可以包含可選的有效負載,形式為字節數組。

4.檢查妳的節點!

在Google Play服務7.3.0及更高版本中,您可以將多個可穿戴設備連接到單個手持設備,例如,用戶可能會濺到多個可穿戴設備上,這些可穿戴設備之間可以切換或同時使用。Wear OS設備也可能會在其使用期限內連接到多個手持設備,例如,如果用戶擁有Android智能手機和平板電腦,或者他們用舊的智能手機替換舊智能手機。 請註意,任何能夠連接到數據層的設備都稱為應用程序代碼中的節點。

在本文中,我將假設只有壹種可用的可穿戴設備。或者,您可以選擇使用GetConnectedNodesgetLocalNode發送消息給哪些設備。

讓我們在我們的下面實現所有這些MainActivity

創建壹個監聽服務

此時,我們的掌上電腦能夠將消息推送至數據層,但由於我們要實現雙向通信,因此還需要偵聽到達數據層的消息。

在本節中,我們將創建壹個執行以下操作的服務:

  1. 監視數據層的事件

您可以通過實現DataClient.OnDataChangedListener接口或擴展來監視數據層WearableListenerService。我選擇後者,因為擴展有壹些好處WearableListenerService。首先,WearableListenerService它在後臺線程上工作,所以妳不必擔心阻塞主UI線程。  其次,系統管理WearableListenerService生命周期以確保它不消耗不必要的資源,根據需要綁定和解除綁定服務。

缺點是WearableListenerService即使應用程序沒有運行,它也會監聽事件,並且如果它檢測到相關事件,它將啟動您的應用程序。如果您的應用程序只需要在事件已經運行時對其進行響應,那麽WearableListenerService可能會不必要地消耗設備的電池。

2.覆蓋相關的數據回調

WearableListenerService可以偵聽壹系列數據層事件,因此您需要覆蓋您有興趣處理的事件的數據事件回調方法。在我們的服務中,我正在實現onMessageReceived,這將在從遠程節點發送消息時觸發。

3.檢查路徑

每次將消息發送到數據層時,我們的應用程序都需要檢查它是否具有正確的my_path標識符。

4.廣播消息 MainActivity

由於WearableListenerService在其他線程上運行,因此無法直接更新UI。為了在我們的應用程序中顯示消息,我們需要將它轉發到MainActivity,使用LocalBroadcastManager

要創建服務:

  • 確保您選擇了移動模塊。
  • 從Android Studio工具欄中選擇新建>服務
  • 命名此服務MessageService
  • 添加以下內容:

最後,打開Manifest並向MessageService條目添加壹些信息:

如前所述,只有當壹個消息排隊等待發送時,該系統才會考慮成功發送消息,這只有在壹個或多個可穿戴設備可用時才會發生。

您可以通過在兼容的智能手機或平板電腦或Android虛擬設備(AVD)上安裝移動模塊來看到這壹點。  點擊Talk to the Wearable按鈕,應用程序將只顯示發送消息...文本。我剛剛發送的可穿戴......文本將不會出現。

如果我們的消息將被排隊等待發送,那麽我們需要在項目的可穿戴模塊中實現另壹組發送者和接收者組件。

創建您的可穿戴式應用程序

我們的可穿戴應用程序將具有與其手持設備相似的功能,因此我將跳過我們已經介紹的所有代碼。

再次,讓我們開始創建應用程序的用戶界面。打開wear模塊的activity_main.xml文件並添加以下內容:

在這壹點上,妳的用戶界面應該是這樣的:

Create the UI for your Android projects Wear OS module

打開妳的build.gradle並添加下列依賴項:

現在,我們需要將我們的消息發送到數據層:

接下來,我們需要創建壹個監聽器來監聽傳入消息的數據層,並在收到新消息時通知MainActivity:

  • 確保選擇了wear模塊。
  • 從Android Studio工具欄選擇新建>服務
  • 將此服務命名為MessageService,然後添加以下內容:

打開模塊Manifest,為以下內容創建壹個意圖過濾器WearableListenerService

您可以從GitHub下載完整的項目

測試妳的應用

此時,您有兩個可以通過數據層交換消息的應用程序,但是如果您要將這些溝通技巧應用於測試,則需要將您的項目安裝在手持設備和可穿戴設備上。

如果妳是壹名Android開發人員,那麽至少有壹部Android智能手機或平板電腦在鋪設,但可穿戴設備仍然是壹種相對較新的小眾產品,所以妳可能還沒有投資智能手表。

如果您決定追求Wear OS開發,那麽您應該在某個時候冒險購買智能手表,因為在真實的Android設備上測試您的應用程序是不可替代的。但是,如果您只是試用Wear OS,那麽您可以創建壹個仿真可穿戴設備的AVD,其方式與創建模擬智能手機或平板電腦的AVD完全相同。 然後,您可以使用端口轉發讓您的AVD和您的Android實體設備通話 。

第壹步是創建壹個可穿戴的AVD並在您的模擬設備上安裝您的穿戴模塊:

  • 從Android Studio工具欄選擇工具> Android> AVD管理器
  • 點擊創建虛擬設備...
  • 從左側菜單中選擇Wear
  • 選擇您想要模擬的可穿戴設備,然後單擊下壹步
  • 選擇您的系統映像,然後單擊下壹步
  • 給妳的AVD壹個名字,然後點擊完成
  • 從Android Studio工具欄選擇Run> Run ...
  • 在出現的小彈出窗口中,選擇Wear ...
  • 選擇您剛剛創建的可穿戴AVD。過壹會兒,AVD將會啟動,並已安裝可穿戴組件。

接下來,將手持設備模塊安裝在智能手機或平板電腦上:

  • 將您的Android實體設備連接到您的開發機器。
  • 從Android Studio工具欄選擇Run> Run ...
  • 提示時選擇移動

最後,我們需要讓我們的實體Android設備和我們的AVD聊天:

  • 確保掌上電腦已啟用藍牙功能(設置>藍牙),並通過USB電纜將其連接到開發機器。
  • 在您的掌上設備上,打開Play商店並通過Google應用下載Wear OS(以前稱為Android Wear)。
  • 啟動Wear OS應用程序。
  • 在您模擬的可穿戴設備上,單擊隨附的按鈕條中的主頁按鈕(光標位於以下屏幕截圖中),然後打開“ 設置”應用程序。

Testing your project by connecting your emulator and your Android smartphone or tablet

  • 選擇System> About,然後重復單擊Build number,直到您看到壹個您現在是開發人員消息
  • 單擊Back按鈕兩次返回主設置菜單。您應該註意到壹個新的開發者選項項目; 點擊它。
  • 選擇ADB調試
  • 在您的開發機器上,打開壹個新的命令提示符(Windows)或終端(Mac),然後更改目錄(cd),使其指向Android SDK的platform-tools文件夾。例如,我的命令如下所示:
  • 確保ADB(Android調試橋)通過運行/.adb devices命令識別模擬器和連接的智能手機或平板電腦。它應該返回兩個獨立設備的代碼。
  • 通過在“終端/命令提示符”窗口中運行以下命令,將AVD的通信端口轉發至所連接的智能手機或平板電腦:
  • 在掌上電腦中,啟動Wear OS應用程序。瀏覽任何介紹性對話,直到您到達Wear OS主屏幕。
  • 打開左上角的下拉菜單並選擇添加新手表
  • 點擊右上角的虛線圖標,然後選擇與模擬器配對。片刻之後,手持設備應連接到您的模擬器。
Use the Wear OS app to pair your emulator with your Android smartphone or tablet

您現在已準備好測試您的應用程序!啟動模擬器上的Wear組件和掌上電腦上的移動組件,然後點擊不同的Talk ...按鈕進行試驗。

當您輕觸手持設備上的可穿戴設備時,應顯示以下消息:

  • 掌上電腦: “我剛給掌上電腦發送了壹條消息。”
  • 可穿戴設備: “我剛收到手持設備發來的消息。”
You can now exchange messages over the Data Layer using the MessageClient API

當您在可穿戴設備上輕擊掌上電腦時,應顯示以下消息:

  • 可穿戴設備: “我只是給手持設備發送了壹條消息。”
  • 手持設備: '我剛剛收到可穿戴設備的信息。“

結論

在本文中,我們研究了如何通過可穿戴數據層在掌上電腦和穿戴式應用之間交換消息。

在制作過程中,您可能會使用這種技術做壹些比簡單交換相同文本行更有趣的事情!例如,如果您開發了可在用戶的智能手機上播放音樂的應用程序,則可以通過將數據從穿戴設備發送到手持設備,通過數據層直接從可穿戴設備播放,暫停和跳過歌曲。

您可以在官方Android文檔中了解更多關於可穿戴數據層的信息,包括如何同步更復雜的數據。

关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.