WearableListenerService onMessageReceived no se llama en el dispositivo
Estoy tratando de enviar un mensaje simple desde mi aplicación Android Wear a la aplicación de mi teléfono usando elWearable.MessageApi
.
Este es mionConnected
devolución de llamada de GoogleApiClient en el dispositivo Wear.
final PendingResult<Status> status = Wearable.DataApi.addListener(googleApiClient, this);
status.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (!status.isSuccess()) {
return;
}
NodeApi.GetConnectedNodesResult nodes =
Wearable.NodeApi.getConnectedNodes(googleApiClient).await();
for (Node node : nodes.getNodes()) {
System.out.println("Sending message: " + node.getDisplayName());
final MessageApi.SendMessageResult result =
Wearable.MessageApi.sendMessage(googleApiClient, node.getId(),
"request", "12345".getBytes())
.await();
System.out.println("sent: " + result.getStatus().isSuccess());
}
}
});
Y esto muestra lo siguiente cuando se ejecuta
Sending message: Nexus 6P
sent: true
Y este es mi servicio registrado en mi aplicación:
public class MyWearableListenerService extends WearableListenerService {
@Override
public void onMessageReceived(MessageEvent messageEvent) {
Toast.makeText(this, "Received message", Toast.LENGTH_LONG).show();
}
@Override
public void onPeerConnected(Node peer) {
Toast.makeText(this, "Peer connected", Toast.LENGTH_LONG).show();
}
}
Verifiqué correctamente que elPeer connected
Toast aparece cuando el emulador está conectado a mi dispositivo. Hice correctamente el reenvío de puertos para depurar el emulador de desgaste. Verifiqué que mi ID de aplicación y los nombres de los paquetes sean consistentes en mi aplicación y en la aplicación de desgaste. Sin embargo, nunca recibo elonMessageReceived
devolución de llamada en mi dispositivo.
¡Cualquier sugerencia es bienvenida! He estado depurando esto durante todo un día ahora :(