Der Versuch, eine Nachricht von einem emulierten Mobilgerät an ein emuliertes Verschleißgerät zu senden. Ich bin in der Lage, das Verschleißgerät durch die Android Wear App zu paaren und zu verifizieren, dass onPeerConnected
des Verschleißgeräts getroffen wird (onMessageReceived
ist nicht).Wearable MessageAPI onMessageReceived traf nie, unterschiedliche Geräte-IDs
Die Verwendung von zwei Codeversionen zur Rückgabe node.getId()
führt zu zwei verschiedenen IDs des Verschleißgeräts.
Ausführen dieses:
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
kehrt: 08-09 Oktober: 24: 33,106 17.914-18.007/com.wear.myapp I/com.wear.myapp: Erfolg !!!! verschickt an: 223faf0e
Ausführen dieses:
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();
Returns: 08-09 Oktober: 24: 33.108 17.914 bis 18.006/com.wear.myapp I/com.wear.streamer: Erfolg !!!! verschickt an: 3a000c12
Noch seltsamen Hardcoding in einem gefälschten Node-ID für das Verschleiß Gerät gibt immer noch eine Erfolgsmeldung in den Protokollen. Fühle mich wie ein falsches positives Ergebnis.
WearableListenerService:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.i(getPackageName(), "Message received");
}
@Override
public void onPeerConnected(Node peer) {
Log.i(getPackageName(), "Peer connected");
}
Ich habe durch alle so ähnliche Fragen wie diese lesen, aber nicht jemand anderes Gerät ids erwähnen gesehen. Ich habe dreifach überprüft, dass die Anwendungs-IDs und Abhängigkeiten zwischen Mobile und Wear identisch sind.
UPDATE:
Wenn unpair der Wear-Emulator und laufen Wearable.NodeApi.getLocalNode
Ich kehrte noch eine nodeId bekommen, während Wearable.NodeApi.getConnectedNodes
nicht der Fall ist, was mich getConnectedNodes
ist zu glauben, führt, was sollte ich verwenden.
Auch das Herunterfahren des Wear-Emulators gibt immer noch eine verbundene Knoten-ID für getLocalNode
zurück, was mich zu der Annahme verleitet, dass es etwas anderes zurückgibt als die Uhr.
Ich war mir nicht bewusst, dass 'onPeerConnected' veraltet war. Normalerweise zeigt Android Studio eine Nachricht an, wenn eine API veraltet ist, aber nicht für "onPeerConnected". Leider haben die Geräte, die ich besitze, nicht die APIs, die ich noch brauche, also bin ich gezwungen, den Emulator zu benutzen. Ich werde in das CapabilityAPI schauen. Danke –
Wenn dies in der Zukunft hilft, können Sie die Emulatoren verwenden, um Nachrichten von einem Telefon an ein Verschleißgerät mit dem schlecht dokumentierten 'CapabilityApi' zu senden –