2014-07-07 11 views

risposta

1

Si potrebbe anche avere un valore booleano (ad esempio mIsConnected) impostato su true in onPeerConnected e false in onPeerDisconnected.

Se si utilizza uno WearableListenerService, questi metodi verranno automaticamente inclusi e sarà sufficiente sovrascriverli: onPeerConnected (Node peer) e onPeerDisconnected (Node peer). Se vuoi farlo in un'attività o qualcosa, invece, implementa solo NodeApi.NodeListener, che ha quei metodi. Assicurati di aggiungerlo al tuo client API Google (addListener(mGoogleApiClient, this)).

+0

Ecco un problema: onPeerConnected() o onPeerDisconnected() viene chiamato se "connect occured" o "disconnect occured". Ma onPeerConnected() non verrà chiamato se il telefono è connesso per guardare prima dell'avvio dell'applicazione. E onPeerDisconnected() non verrà chiamato se il telefono si disconnette dall'orologio prima dell'avvio dell'applicazione. Quindi, sembra essere Wearable.NodesApi.getConnnectedNodes() è l'unico modo per "chiedere" il servizio sui nodi connessi. – Fox

+0

Ho testato NodeListener (onPeerConnected e onPeerDisconnected) sia sull'emulatore che sul dispositivo reale (Zen Watch 2). Mentre queste funzioni venivano chiamate su emulatore ogni volta che Android Wear si connetteva/disconnetteva, non si verificava su Zen Watch 2. Non so perché, ma penso che l'emulatore abbia l'ultimo servizio Google Play, ma Zen Watch 2 no. – Ken

2

NodeAPI può verificare se il vostro dispositivo Android Wear e telefono siano collegati o meno in modo semplice come questo:

Questa è la funzione di callback quando si chiama:

private void checkNodeAPI(){ 
    Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(this, 1000, TimeUnit.MILLISECONDS); 
} 

// richiamata

@Override 
public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) { 
    if (getConnectedNodesResult != null && getConnectedNodesResult.getNodes() != null){ 
     mWearableConnected = false; 
     for (Node node : getConnectedNodesResult.getNodes()){ 
      if (node.isNearby()){ 
       mWearableConnected = true; 
      } 
     } 
    } 
    Log.v("TEST", "mWearableConnected: " + mWearableConnected); 
} 

getConnectedNodes() è una funzione asincrona, quindi il risultato viene restituito dopo un po ', non è possibile ottenerlo immediatamente.

Per ricevere l'evento quando un Android Wear collega/scollega al telefono, è possibile utilizzare questa funzione per aggiungere di seguito ascoltatore:

Wearable.NodeApi.addListener(mGoogleApiClient, this); 

@Override 
public void onPeerConnected(Node node) { 
    Log.v("TEST", "onPeerConnected"); 
    mWearableConnected = true; 
} 

@Override 
public void onPeerDisconnected(Node node) { 
    Log.v("TEST", "onPeerDisconnected"); 
    checkNodeAPI(); 
} 

Ma questo ascoltatore non è sempre chiamato su alcuni dispositivi Android Wear.

+0

Esiste anche una funzione di sincronizzazione: Wearable.NodeApi.getConnectedNodes (googleApiClient) .await() –

Problemi correlati