5

Android Wear デバイスが現在接続されている場合、アプリの動作が異なるようにします。これを検出する最も簡単な方法は何ですか?

Google Play Services にあるこの方法を使用できると思いますが、デバイスがそこにあるかどうかを確認するためだけに多くのオーバーヘッドがかかるようです。他に方法はありますか?

4

3 に答える 3

3

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 デバイスでは、このリスナーが常に呼び出されるわけではありません。

于 2016-03-03T02:02:34.877 に答える
1

Wearable.NodesApi.getConnnectedNodes()あなたが述べているように、APIを使用する必要があります。

少なくとも現在のところ、これを行う他の方法はありません。

于 2014-07-08T01:21:37.530 に答える
1

onPeerConnected で true に設定され、onPeerDisconnected で false に設定されたブール値 (mIsConnected など) を持つこともできます。

WearableListenerServiceを使用している場合は、これらのメソッドが自動的に含まれるので、オーバーライドする必要があります: onPeerConnected(Node peer) および onPeerDisconnected(Node peer)。代わりにアクティビティなどでこれを行いたい場合は、これらのメソッドを持つNodeApi.NodeListenerを実装するだけです。必ず Google API クライアントに追加してください ( addListener(mGoogleApiClient, this) )。

于 2014-07-18T20:13:19.613 に答える