2017-08-14 79 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