2017-08-14 17 views
1

Android Wear 2.0アプリのリクエスト/レスポンスプロトコルを実装するにはどうすればよいですか?Request-Response API for Android Wear 2.0?

シナリオ:私は、時計のボタンをタップすると

、私はそれが携帯電話からいくつかのデータをフェッチし、時計の画面上に表示したいです。

私が試した何

私はMessageApiを使用して実施例を実施したが、私はそれを好きではありません。 1つの方法で1つの場所でダミーの「リクエスト」を送信しますが、私はPendingResultを無視して、最終的には対応する応答を受け取ることを願っています。

理想的には、私が持っているしたいことは次のとおりです。

byte[] responseBytes = sendRequest(someRequestBytes);

+0

をあなたの「理想的な」解決策はどのようにデバイス間通信の動作ではありません、同期関数呼出し、です。ワイヤレスデータの転送には時間がかかります。そのため、WearデータAPIとメッセージAPIは非同期に構成されています。 – String

+0

@String私は、非同期のリクエスト - レスポンスAPI(Futures、Promises、すべてのこと)に全く満足しています。それは質問のタイトルと本文についてです。 – DogeLion

+0

Hmm。あなたの質問では**既に**非同期でこれを実装していますが、あなたはそれに満足していません - 同期ソリューションを好むでしょう。シンクロナスがアーキテクチャでサポートされていないという認識はありませんでした。 – 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

関連する問題