2016-05-16 42 views
1

私はデバイスに通信してウェアに戻るアンドロイド用のアプリを作成しています。これはonclick on wearのコードです。メッセージをアンドロイドウェアに送信するアンドロイドデバイスにメッセージを送信しますが、着信時に受信したメッセージは受信されません。

message1Button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Wearable.MessageApi.sendMessage(apiClient, remoteNodeId, MESSAGE1_PATH, null).setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() { 
       @Override 
       public void onResult(MessageApi.SendMessageResult sendMessageResult) { 
        Intent intent = new Intent(getApplicationContext(), ConfirmationActivity.class); 
        if (sendMessageResult.getStatus().isSuccess()) { 

         intent.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.SUCCESS_ANIMATION); 
         intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE, getString(R.string.message1_sent)); 
        } else { 
         intent.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.FAILURE_ANIMATION); 
         intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE, getString(R.string.error_message1)); 
        } 
        startActivity(intent); 
       } 
      }); 

以下、ハンドヘルドデバイス上で受信された上でのコードです。

public void onMessageReceived(MessageEvent messageEvent) { 
      if (messageEvent.getPath().equals(MESSAGE1_PATH)) { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         receivedMessagesEditText.append("\n" + getString(R.string.received_message1)); 
         String serverURL = "A Working URL"; 
         try { 
          ArrayList<String> list=new ArrayList<String>(); 
          list.add(0,serverURL); 
          list.add(1,"SELECT DISTINCT ACCOUNTNO FROM CUSTOMR_WISE_WALLET_POINTS ORDER BY ACCOUNTNO"); 
          jsonContent= new LongOperation().execute(list).get(); 
         } catch (InterruptedException e) { 
          Log.e("Error",e.getMessage()); 
          e.printStackTrace(); 
         } catch (ExecutionException e) { 
          e.printStackTrace(); 
         } 

         Log.d("Value of json",jsonContent); 

        } 
       }); 
       Wearable.MessageApi.sendMessage(apiClient, remoteNodeId, MESSAGE4_PATH, jsonContent.getBytes()).setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() { 
        @Override 
        public void onResult(MessageApi.SendMessageResult sendMessageResult) { 
         if (sendMessageResult.getStatus().isSuccess()) 
          Toast.makeText(getApplication(), "Message 4 sent", Toast.LENGTH_SHORT).show(); 
         else 
          Toast.makeText(getApplication(), getString(R.string.error_message1), Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } else if (messageEvent.getPath().equals(MESSAGE2_PATH)) { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         receivedMessagesEditText.append("\n" + getString(R.string.received_message2)); 
        } 
       }); 
      } 
     } 

ハンドヘルドデバイスショートースト "送信メッセージ4"。ウェアのメッセージリスナは決してトリガーされません。

messageListener = new MessageApi.MessageListener() { 
     @Override 
     public void onMessageReceived(final MessageEvent messageEvent) { 
      Log.d("Inside","On message recieved"); 
      if (messageEvent.getPath().equals(MESSAGE1_PATH)) { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         receivedMessagesEditText.append("\n" + getString(R.string.received_message1)); 
         /*COde to send another request*/ 
         Wearable.MessageApi.sendMessage(apiClient, remoteNodeId, MESSAGE3_PATH, "Hello".getBytes()).setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() { 
          @Override 
          public void onResult(MessageApi.SendMessageResult sendMessageResult) { 
           Intent intent = new Intent(getApplicationContext(), ConfirmationActivity.class); 
           if (sendMessageResult.getStatus().isSuccess()) { 
            intent.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.SUCCESS_ANIMATION); 
            intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE, "Message 3 sent"); 
           } else { 
            intent.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.FAILURE_ANIMATION); 
            intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE, getString(R.string.error_message2)); 
           } 
           startActivity(intent); 
          } 
         }); 


        } 
       }); 
      } else if (messageEvent.getPath().equals(MESSAGE2_PATH)) { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         receivedMessagesEditText.append("\n" + getString(R.string.received_message2)); 
        } 
       }); 
      } 
      else if(messageEvent.getPath().equals(MESSAGE4_PATH)){ 

       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         receivedMessagesEditText.append("\n" + getString(R.string.received_message1)); 
         /*COde to send another request*/ 

         // String jsonInString=new String(messageEvent.getData()); 
         Log.d("Inside Message 4","Inside"); 
         String[] items = new String[]{"Select User", "2", "three"}; 
         ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, items); 
         dropdown.setAdapter(adapter); 
         message2Button.setEnabled(true); 

        } 
       }); 

      } 
     } 
    }; 

要約すると、私は、ハンドリングされたメッセージを受信して​​からメッセージを送信することができます。メッセージはハンドヘルドから正常に送信されますが、メッセージ受信者の範囲内から呼び出されたときに着信時に受信されたメッセージはトリガーされません。私はアプリのIDを確認した、彼らは同じです。私はまた、ハンドヘルドからbutton2でトリガすることによって摩耗に受信したメッセージでテストしました。それは正常に動作します。事前に感謝します

答えて

0

MessageApiは、結果のコードが正常に返された場合でもメッセージが受信されることを保証しません。文書hereを確認してください。

注:正常な結果コードではメッセージの配信が保証されません。アプリでデータの信頼性が必要な場合は、DataItemオブジェクトまたはChannelApiクラスを使用してデバイス間でデータを送信します。

+0

ありがとうございました。それはとても役に立ちました!データ項目を使用するために、正式なドキュメント以外の良いリソース/例を指すのに役立ちます。もう一度ありがとうございます! – UndoTheUndo

+0

Googleは実際にオンラインでかなり良いチュートリアルを持っています。 [DataApi.DataListener](https://developer.android.com/training/wearables/data-layer/data-items.html)を確認することができます。バックグラウンドでデータの変更を処理する場合は、代わりに[WearableListenerService](https://developer.android.com/training/wearables/data-layer/events.html#Listen)を使用することをお勧めします。これらがあなたに役立つかどうか私に教えてください。 –

関連する問題