エミュレートされたモバイルデバイスからエミュレートされたウェアデバイスにメッセージを送信しようとしています。 Android Wearアプリでウェアデバイスをペア設定し、ウェアデバイスのonPeerConnected
にヒットしたことを確認できます(onMessageReceived
はありません)。ウェアラブルMessageAPI onMessageReceivedは決してヒットしません。異なるデバイスID
node.getId()
を返すために2つのコードバージョンを使用すると、ウェアデバイスの2つの異なるIDが返されます。
new Thread(new Runnable() {
@Override
public void run() {
NodeApi.GetLocalNodeResult nodes = Wearable.NodeApi.getLocalNode(mGoogleApiClient).await();
Node node = nodes.getNode();
MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), "Hello Watch 1", null).await();
if (!result.getStatus().isSuccess()) {
Log.e(getPackageName(), "error");
} else {
Log.i(getPackageName(), "success!!!! sent to: " + node.getId());
}
}
}).start
リターン:08-09 10:24:33.106 17914から18007/com.wear.myapp I/com.wear.myapp:この実行
成功を!!!! この実行223faf0e
:
new Thread(new Runnable() {
@Override
public void run() {
NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
for (Node node : nodes.getNodes()) {
MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), "Hello Watch 2", null).await();
if (!result.getStatus().isSuccess()) {
Log.e(getPackageName(), "error");
} else {
Log.i(getPackageName(), "success!!!! sent to: " + node.getId());
}
}
}
}).start();
戻り値:08-09 10:24:33.108 17914から18006/com.wear.myapp I/com.wear.streamer:成功をに送信!!!! 3a000c12
偽のノードIDでのハードコーディングでも、ログに成功メッセージが返されます。私は偽陽性の結果を得ているように感じる。
WearableListenerService:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.i(getPackageName(), "Message received");
}
@Override
public void onPeerConnected(Node peer) {
Log.i(getPackageName(), "Peer connected");
}
私はこれに似たすべてのSOの質問を読んできましたが、誰もがデバイスIDの異なる言及見ていません。私はapplicationIdsと依存関係がモバイルとウェアの間で同じであることを三重にチェックしました。
UPDATE:
Wearable.NodeApi.getConnectedNodes
にはないながら、私はまだのnodeIdはgetConnectedNodes
は、私が使用してすべきかであると信じて私につながる、返されますウエアエミュレータ登録解除とWearable.NodeApi.getLocalNode
を実行した場合。
また、Wearエミュレータをシャットダウンしても、接続ノードIDはgetLocalNode
に戻ってしまい、時計以外の何かが返されていると思われます。
'onPeerConnected'が廃止されたことに気づいていませんでした。通常、Android StudioはAPIが非推奨になっても 'onPeerConnected'ではないというメッセージを表示します。残念ながら、自分が所有するデバイスにはまだ必要なAPIがないため、エミュレータを使用する必要があります。私は 'CapabilityAPI'を調べます。ありがとう –
将来的に誰にでも役立つ場合は、エミュレータを使用して、携帯電話からウェアラブルデバイスにメッセージを送信することができます。これは、文書化されていない 'CapabilityApi' –