两个WearableListenerService侦听来自单个可穿戴应用程序的消息

时间:2015-03-23 08:01:12

标签: wear-os android-wear-data-api

我遇到了一个问题,我想让两个不同的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)方法进行聆听。

但是,当我从一到两个听众服务时,似乎不再收到消息了?

所以我的问题是:在单个伴随可穿戴应用程序组合中,有多少服务可以通过gms监听消息?

4 个答案:

答案 0 :(得分:1)

您只能拥有一个WearableListenerService。 Android Wear不支持多个。

答案 1 :(得分:0)

您可以无限制地在任何常规服务或活动中收听可穿戴消息。我相信你一次只能有一个WearableListenerService。所以你应该做的就是使用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) { }
}

注意:您也可以将同样的基本原则与服务结合使用。

答案 2 :(得分:0)

通过扩展WearableListenerService是不可能的,但是我创建了一个小型库,它使用一个WearableListenerService和一个BroadcastReceiver将这些事件无延迟地传递给您希望的任意数量的监听器

https://github.com/tajchert/ServiceWear

答案 3 :(得分:0)

只有一个听众就够了。借助不同的路径&#34;您可以检查向您发送消息的听众服务,然后决定如何处理该消息。