1

我遇到了一个问题,我想让两个不同的 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

4 回答 4

1

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

于 2015-03-23T15:22:21.007 回答
0

您可以不受限制地在任何常规服务或活动中收听可穿戴消息。我相信您一次只能拥有一个 WearableListenerService。所以你可能应该做的是处理任何需要在后台使用 Wea​​rableListenerService 处理的消息。当您运行需要监听可穿戴消息的活动或普通旧服务时,请实现 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

通过扩展是不可能的,WearableListenerService但我创建了一个小型库,它使用 oneWearableListenerService和 aBroadcastReceiver将这些事件传递给您希望的任意数量的 Listener。

https://github.com/tajchert/ServiceWear

于 2015-03-24T21:39:24.820 回答
0

一个听众就足够了。借助不同的“路径”,您可以检查向您发送消息的侦听器服务,然后决定如何处理它。

于 2015-03-25T11:38:49.177 回答