wear smartwatch recibir recibe notificaciones como android notifications

smartwatch - notificaciones whatsapp android wear



Notificación de desconexión de Android Wear (2)

Los dispositivos conectados en la red de desgaste al dispositivo se llaman Nodos. Puede utilizar la API de nodo para determinar cuándo los dispositivos entran o salen de la red (por ejemplo, cuando un dispositivo de desgaste se desconecta de un teléfono).

https://developers.google.com/android/reference/com/google/android/gms/wearable/NodeApi.NodeListener

También puede usar la API Nodo para obtener una lista de todos los dispositivos conectados (por ejemplo, todos los dispositivos de desgaste conectados a un teléfono) en cualquier momento dado

https://developers.google.com/android/reference/com/google/android/gms/wearable/NodeApi

Tengo una aplicación Android Wear que comunica los valores del acelerómetro a una aplicación de mano.

Deseo recibir una notificación en la aplicación de mano cuando la conexión con la aplicación de Android se acaba de perder (cuando la aplicación Android Wear está cerrada, por ejemplo).

¿Cómo debo implementar eso?

Gracias por tu ayuda


Puede hacer esto fácilmente ampliando el WearableListenerService y reemplazando el método de ConnectConnectedNodes ().

Lado usable

public class DisconnectListenerService extends WearableListenerService implements GoogleApiClient.ConnectionCallbacks { /* the capability that the phone app would provide */ private static final String CONNECTION_STATUS_CAPABILITY_NAME = "is_connection_lost"; private GoogleApiClient mGoogleApiClient; @Override public void onCreate() { super.onCreate(); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(Wearable.API) .addConnectionCallbacks(this) .build(); } @Override public void onConnectedNodes(List<Node> connectedNodes) { if (mGoogleApiClient.isConnected()) { updateStatus(); } else if (!mGoogleApiClient.isConnecting()) { mGoogleApiClient.connect(); } } private void updateStatus() { Wearable.CapabilityApi.getCapability( mGoogleApiClient, CONNECTION_STATUS_CAPABILITY_NAME, CapabilityApi.FILTER_REACHABLE).setResultCallback( new ResultCallback<CapabilityApi.GetCapabilityResult>() { @Override public void onResult(CapabilityApi.GetCapabilityResult result) { if (result.getStatus().isSuccess()) { updateConnectionCapability(result.getCapability()); } else { Log.e(TAG, "Failed to get capabilities, " + "status: " + result.getStatus().getStatusMessage()); } } }); } private void updateConnectionCapability(CapabilityInfo capabilityInfo) { Set<Node> connectedNodes = capabilityInfo.getNodes(); if (connectedNodes.isEmpty()) { // The connection is lost ! } else { for (Node node : connectedNodes) { if (node.isNearby()) { // The connection is OK ! } } } } @Override public void onConnected(Bundle bundle) { updateStatus(); } @Override public void onConnectionSuspended(int cause) { } @Override public void onDestroy() { if (mGoogleApiClient.isConnected() || mGoogleApiClient.isConnecting()) { mGoogleApiClient.disconnect(); } super.onDestroy(); } }

Lado del teléfono

crea un archivo xml en valores / directorio llamado wear.xml

<resources> <string-array name="android_wear_capabilities"> <item>is_connection_lost</item> </string-array> </resources>