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>