Próbujesz wysłać wiadomość z emulowanego urządzenia przenośnego do emulowanego urządzenia zużycia. Potrafię powiązać urządzenie zużywające się z aplikacją Android Wear i sprawdzić, czy zostało uszkodzone urządzenie onPeerConnected
(nie jest to onMessageReceived
).Wearable MessageAPI onMessageReceived nigdy nie hit, różne urządzenia id
Używanie dwóch wersji kodu do zwracania node.getId()
powoduje wyświetlenie dwóch różnych identyfikatorów urządzenia zużycia.
Running to:
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
Powroty: 08-09 10: 24: 33.106 17914-18007/com.wear.myapp I/com.wear.myapp: sukces !!!! przesyłać na adres: 223faf0e
Running to:
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();
Powroty: 08-09 10: 24: 33.108 17914-18006/com.wear.myapp I/com.wear.streamer: sukces !!!! przesyłać na adres: 3a000c12
Nawet obcy hardcoding w fałszywym ID węzła dla urządzenia ścieranie nadal zwraca komunikat sukces w dziennikach. Poczuj się tak, jakbym uzyskał fałszywy pozytywny wynik.
WearableListenerService:
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Log.i(getPackageName(), "Message received");
}
@Override
public void onPeerConnected(Node peer) {
Log.i(getPackageName(), "Peer connected");
}
Czytałem przez co tak podobne do tego pytania, ale nie widać nikogo innego urządzenia wspomnieć identyfikatorów. Sprawdziłem potrójnie, czy identyfikatory aplikacji i zależności są identyczne między komórką a zużyciem.
UPDATE:
Jeśli rozłączyć emulatora zużycia i uruchomić Wearable.NodeApi.getLocalNode
I jeszcze dostać nodeid powrócił, a Wearable.NodeApi.getConnectedNodes
nie, co prowadzi mi uwierzyć getConnectedNodes
jest to, co powinno być używane.
Co więcej, zamknięcie emulatora Zużycie nadal zwraca połączony identyfikator węzła dla getLocalNode
, co prowadzi mnie do przekonania, że zwraca coś innego niż zegarek.
Nie wiedziałem, że "onPeerConnected" jest przestarzałe. Zazwyczaj program Android Studio wyświetla komunikat, jeśli api jest przestarzałe, ale nie jest dla "onPeerConnected". Niestety posiadane przeze mnie urządzenia nie mają jeszcze potrzebnych interfejsów API, więc jestem zmuszony do korzystania z emulatora. Zajrzę do 'CapabilityAPI'. Dzięki –
Jeśli to pomoże każdemu w przyszłości, możesz użyć emulatorów do wysyłania wiadomości z telefonu do urządzenia zużywającego się przy użyciu słabo udokumentowanego 'CapabilityApi' –