NodeAPI thể kiểm tra xem thiết bị Android Wear của bạn và điện thoại được kết nối hoặc không theo một cách đơn giản như thế này:
Đây là chức năng gọi lại khi bạn gọi:
private void checkNodeAPI(){
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(this, 1000, TimeUnit.MILLISECONDS);
}
// Callback
@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() là một chức năng không đồng bộ, do đó kết quả chỉ được trả lại sau một thời gian, bạn không thể tải ngay lập tức.
Tiếp nhận sự kiện khi một Android Wear kết nối/ngắt kết nối điện thoại của bạn, bạn có thể sử dụng chức năng này bên dưới để thêm người nghe:
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();
}
Nhưng nghe này không phải luôn luôn kêu gọi một số thiết bị Android Wear.
Đây là vấn đề: onPeerConnected() hoặc onPeerDisconnected() được gọi nếu "kết nối xảy ra" hoặc "ngắt kết nối". Nhưng onPeerConnected() sẽ không được gọi nếu điện thoại được kết nối với đồng hồ trước khi ứng dụng bắt đầu. Và onPeerDisconnected() sẽ không được gọi nếu điện thoại bị ngắt kết nối khỏi đồng hồ trước khi ứng dụng bắt đầu. Vì vậy, dường như Wearable.NodesApi.getConnnectedNodes() chỉ là cách để "hỏi" dịch vụ về các nút được kết nối. – Fox
Tôi đã thử nghiệm NodeListener (onPeerConnected và onPeerDisconnected) trên cả trình giả lập và thiết bị thực (Zen Watch 2). Trong khi các chức năng này được gọi trên trình giả lập mỗi lần kết nối/ngắt kết nối Android Wear, nó không xảy ra trên Zen Watch 2. Tôi không biết tại sao, nhưng tôi nghĩ giả lập có Dịch vụ Google Play mới nhất, nhưng Zen Watch 2 thì không. – Ken