两个 WearableListenerService 侦听来自单个可穿戴应用程序的消息
Two WearableListenerService listening for messages from single wearable app
我遇到了一个问题,我想让两个不同的 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 侦听消息是否有限制?
您只能拥有一个WearableListenerService
。 Android Wear 不支持超过一个
您可以在任何常规服务或 activity 中无限制地收听可穿戴消息。我相信你一次只能有一个 WearableListenerService。因此,您可能应该做的是使用 WearableListenerService 处理任何需要在后台处理的消息。当您是 运行 一个 activity 或需要侦听可穿戴消息的普通旧服务时,请实施 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) { }
}
注意:您也可以将同样的基本原则用于服务。
不可能通过扩展 WearableListenerService
但我创建了一个小型库,它使用一个 WearableListenerService
和一个 BroadcastReceiver
将这些事件无延迟地传递给任何数量的监听器你愿意。
一个听众就够了。在不同 "paths" 的帮助下,您可以检查向您发送消息的侦听器服务,然后决定如何处理它。
我遇到了一个问题,我想让两个不同的 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 侦听消息是否有限制?
您只能拥有一个WearableListenerService
。 Android Wear 不支持超过一个
您可以在任何常规服务或 activity 中无限制地收听可穿戴消息。我相信你一次只能有一个 WearableListenerService。因此,您可能应该做的是使用 WearableListenerService 处理任何需要在后台处理的消息。当您是 运行 一个 activity 或需要侦听可穿戴消息的普通旧服务时,请实施 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) { }
}
注意:您也可以将同样的基本原则用于服务。
不可能通过扩展 WearableListenerService
但我创建了一个小型库,它使用一个 WearableListenerService
和一个 BroadcastReceiver
将这些事件无延迟地传递给任何数量的监听器你愿意。
一个听众就够了。在不同 "paths" 的帮助下,您可以检查向您发送消息的侦听器服务,然后决定如何处理它。