2016-04-02 73 views
-1

我正在爲Android穿戴設備創建傳感器記錄器應用程序。日誌記錄正在服務中發生,從可穿戴設備發送數據由服務完成,但在閱讀Android開發人員指南並完成一些測試之後,似乎接收DataMap的首選方法是使用「活動」。我閱讀了WearableListenerService,並將其用於電話和可穿戴設備之間,但之後我發送了一條消息,現在我想發送一個DataMap,就我所知,使用WearableListenerService不容易實現。從可穿戴服務到手持服務的通信[Android]

illustration(謝謝你批准我的油漆技能)顯示了我想要什麼樣的設置,使用服務。我想在底部的箭頭上發送一個DataMap,並創建一個服務來接收DataMap並將數據發送到另一個服務以寫入文件。

這是該服務可穿戴發送的數據圖:

public class SendDataMapToHandheldDataLayer_Thread extends Thread { 

private String path; 
private DataMap dataMap; 
private GoogleApiClient googleClient; 

public SendDataMapToHandheldDataLayer_Thread(String cPath, DataMap cDataMap, GoogleApiClient cGoogleClient){ 
    path = cPath; 
    dataMap = cDataMap; 
    googleClient = cGoogleClient; 
} 

public void run(){ 
    PutDataMapRequest putDMR = PutDataMapRequest.create(path); 
    putDMR.getDataMap().putAll(dataMap); 
    PutDataRequest request = putDMR.asPutDataRequest(); 
    DataApi.DataItemResult result = Wearable.DataApi.putDataItem(googleClient, request).await(); 
    if(result.getStatus().isSuccess()){ 
     Log.v("dataMapSender_Wear", "DataMap successfully sent!"); 
    }else{ 
     Log.v("dataMapSender_Wear", "ERROR: Failed to send DataMap to data layer"); 
    } 
} 

}

將接收器是什麼樣子?

感謝所有精彩的人回答! :)

回答

0

利用基於服務的架構,就像你所述,你的接收器將延長WearableListenerService,如下所示:http://developer.android.com/training/wearables/data-layer/events.html#Listen

+0

感謝您的回答。我以前閱讀過這篇文章,但我可以嘗試再次關注它。如果我陷入更多麻煩,我可能會回到你身邊尋求更多幫助。再次感謝@String! :) –

+0

從您鏈接到的文章中的示例中,可以解釋此行的用途嗎? ConnectionResult connectionResult = client.blockingConnect(30,TimeUnit.SECONDS); –

+0

等待連接到Google Play服務客戶端的30秒完成。您需要該連接才能使用Data API。如果此代碼不在服務中,則可以使用(非阻塞)'connect'調用,但這裏代碼只需等待連接即可。 – String