Android Wear デバイスが現在接続されている場合、アプリの動作が異なるようにします。これを検出する最も簡単な方法は何ですか?
Google Play Services にあるこの方法を使用できると思いますが、デバイスがそこにあるかどうかを確認するためだけに多くのオーバーヘッドがかかるようです。他に方法はありますか?
Android Wear デバイスが現在接続されている場合、アプリの動作が異なるようにします。これを検出する最も簡単な方法は何ですか?
Google Play Services にあるこの方法を使用できると思いますが、デバイスがそこにあるかどうかを確認するためだけに多くのオーバーヘッドがかかるようです。他に方法はありますか?
NodeAPI は、次のような簡単な方法で、Android Wear デバイスと電話が接続されているかどうかを確認できます。
これは、呼び出したときのコールバック関数です。
private void checkNodeAPI(){
Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(this, 1000, TimeUnit.MILLISECONDS);
}
//折り返し電話
@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() は非同期関数なので、しばらくすると結果が返ってくるだけで、すぐには取得できません。
Android Wear が携帯電話に接続/切断されたときにイベントを受け取るには、以下の関数を使用してリスナーを追加します。
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();
}
ただし、一部の Android Wear デバイスでは、このリスナーが常に呼び出されるわけではありません。
Wearable.NodesApi.getConnnectedNodes()
あなたが述べているように、APIを使用する必要があります。
少なくとも現在のところ、これを行う他の方法はありません。
onPeerConnected で true に設定され、onPeerDisconnected で false に設定されたブール値 (mIsConnected など) を持つこともできます。
WearableListenerServiceを使用している場合は、これらのメソッドが自動的に含まれるので、オーバーライドする必要があります: onPeerConnected(Node peer) および onPeerDisconnected(Node peer)。代わりにアクティビティなどでこれを行いたい場合は、これらのメソッドを持つNodeApi.NodeListenerを実装するだけです。必ず Google API クライアントに追加してください ( addListener(mGoogleApiClient, this) )。