2017-08-14 118 views
1

如何爲Android Wear 2.0應用程序實現請求 - 響應協議?Android Wear 2.0的請求 - 響應API?

場景:

當我對手錶的按鈕點擊,我希望它從手機中獲取的一些數據和手錶的屏幕上顯示。

我的嘗試:

我實現並採用MessageApi工作的例子,但我不喜歡它。我用一種方法在一個地方發送虛擬「請求」,我忽略PendingResult,然後希望最終我會收到一條消息,這將是相應的迴應。

理想情況下,我想有是:

byte[] responseBytes = sendRequest(someRequestBytes);

+0

你的「理想」的解決方案是一個同步函數調用,這是不如何的設備間通信的作品。無線數據傳輸需要時間,這就是Wear數據和消息API異步構造的原因。 – String

+0

@String我對一個異步請求響應API - 期貨,承諾,完全滿意。這就是問題的標題和正文。 – DogeLion

+0

嗯。在你的問題中,你說**已經**異步實現了這個,但是你對它不滿意 - 你更喜歡同步解決方案。我沒有看到任何確認該架構不支持同步。 – String

回答

0

我不知道你已經嘗試了什麼。

但是這段代碼應該可以發送一個字節數組。

Wearable.MessageApi.sendMessage(googleApiClient, transcriptionNodeId, 
      VOICE_TRANSCRIPTION_MESSAGE_PATH, voiceData).setResultCallback(
        new ResultCallback() { 
         @Override 
         public void onResult(SendMessageResult sendMessageResult) { 
          if (!sendMessageResult.getStatus().isSuccess()) { 
           // Failed to send message 
          } 
         } 
        } 
      ); 

voiceData是一個簡單的字節數組。這個陣列將被可穿戴設備和手持設備接收。

​​

檢索數據使用:

@Override 
public void onMessageReceived(MessageEvent messageEvent) { 
    if (messageEvent.getPath().equals(YOUR_TEXT)) { 
     messageEvent.getData();//this is your byte array 
    } 
} 
+0

嗯,但答案在哪裏? – DogeLion

+0

@DogeLion ok。我更新了答案 – Vyacheslav

+0

你的代碼正是我在我的問題中描述的 - 我做到了這一點,它的工作原理,我不喜歡它,並且正在尋找更多的面向請求響應的API :)但是,無論如何,謝謝! – DogeLion