1

ウェアラブル アプリからのメッセージをリッスンする 2 つの異なる WearableListenerServices を使用したいという問題があります。WearableListenerService を拡張し、次のように構成します。

<service android:name="no.xx.xx.wear.WearService">
    <intent-filter>
        <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
    </intent-filter>
</service>

メッセージは、メソッドを使用してウェアラブル アプリから送信され、 メソッドWearable.MessageApi.sendMessage(...)を使用してリッスンされます。WearableListenerService's onMessageReceived(MessageEvent messageEvent)

しかし、リスナー サービスを 1 つから 2 つに変更すると、メッセージが受信されなくなったようです。

私の質問は次のとおりです。1 つのコンパニオン ウェアラブル アプリの組み合わせで、gms を介してメッセージをリッスンできるサービスの数に制限はありますか?

4

4 に答える 4

1

1 つだけ持つことができますWearableListenerService。Android Wear では、複数のデバイスを持つことはサポートされていません。

于 2015-03-23T15:22:21.007 に答える
0

通常のサービスやアクティビティでウェアラブル メッセージを無制限に聞くことができます。ただし、一度に使用できる WearableListenerService は 1 つだけだと思います。したがって、おそらく行うべきことは、WearableListenerService を使用してバックグラウンドで処理する必要があるメッセージを処理することです。また、ウェアラブル メッセージをリッスンする必要があるアクティビティまたは単純な古いサービスを実行している場合は、MessageApi.MessageListener を実装します。ここに例があります

public class MainActivity extends Activity  implements
        GoogleApiClient.ConnectionCallbacks,
        GoogleApiClient.OnConnectionFailedListener, MessageApi.MessageListener {

    private GoogleApiClient googleClient; // A google client for Wear interaction

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Build a new GoogleApiClient that includes the Wearable API
        googleClient = new GoogleApiClient.Builder(this)
                .addApi(Wearable.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }

    @Override
    public void onConnected(Bundle connectionHint) {
        Wearable.MessageApi.addListener(googleClient, this);
    }

    @Override
    public void onMessageReceived(MessageEvent messageEvent) {
        //Same onMessageReceived as in WearableListenerService
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) { }
    @Override
    public void onConnectionSuspended(int i) { }
}

注: これと同じ基本原則をサービスでも使用できます。

于 2015-03-23T18:59:46.643 に答える
0

拡張することはできませんが、1とを使用してこれらのイベントを任意の数のリスナーに遅延なく渡すWearableListenerService小さなライブラリを作成しました。WearableListenerServiceBroadcastReceiver

https://github.com/tajchert/ServiceWear

于 2015-03-24T21:39:24.820 に答える
0

リスナーは 1 人で十分です。さまざまな「パス」の助けを借りて、メッセージを送信したリスナー サービスをチェックインし、それをどう処理するかを決定できます。

于 2015-03-25T11:38:49.177 に答える