私はデバイスに通信してウェアに戻るアンドロイド用のアプリを作成しています。これは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でトリガすることによって摩耗に受信したメッセージでテストしました。それは正常に動作します。事前に感謝します
ありがとうございました。それはとても役に立ちました!データ項目を使用するために、正式なドキュメント以外の良いリソース/例を指すのに役立ちます。もう一度ありがとうございます! – UndoTheUndo
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)を使用することをお勧めします。これらがあなたに役立つかどうか私に教えてください。 –