2014-10-09 120 views
2

我有一个Android Wear应用程序,它将加速度计值传递给Handheld应用程序。Android Wear断开连接通知

我想在手机应用程序中通知与Android Wear应用程序的连接刚刚丢失(例如Android Wear应用程序关闭时)。

我该如何执行该操作?

感谢您的帮助

回答

0

您可以轻松地(例如,所有穿连接到电话设备)通过扩展WearableListenerService并覆盖onConnectedNodes()方法来做到这一点。

穿戴式侧

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(); 
    } 
} 

手机端

创造价值/目录下的xml文件名为wear.xml

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