我遇到了一个问题,我想让两个不同的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监听消息?
答案 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
将这些事件无延迟地传递给您希望的任意数量的监听器
答案 3 :(得分:0)
只有一个听众就够了。借助不同的路径&#34;您可以检查向您发送消息的听众服务,然后决定如何处理该消息。