我正在开发一款适用于 Android Wear 的应用程序,它可以在手机上启动活动。一切都很好,但我不想依赖手机上不断运行的后台服务来接收此消息。理想情况下,我会让 WearableListenerService 与应用程序同时启动,并保持运行直到 onPause。
有没有办法使用广播接收器和意图过滤器拦截来自 Wear 的消息,然后从接收器启动应用程序/服务?这是一些代码:
向手机发送消息:
private void sendMessage(String path, byte[] data) {
if (mNode != null && mGoogleApiClient!=null && mGoogleApiClient.isConnected()) {
Wearable.MessageApi.sendMessage(
mGoogleApiClient, mNode.getId(), path, data).setResultCallback(
new ResultCallback<MessageApi.SendMessageResult>() {
@Override
public void onResult(MessageApi.SendMessageResult sendMessageResult) {
if (!sendMessageResult.getStatus().isSuccess()) {
Log.e("TAG", "Failed to send message with status code: "
+ sendMessageResult.getStatus().getStatusCode());
Toast info = Toast.makeText(WearActivity.this, "Failed to send message, status code: " + sendMessageResult.getStatus().getStatusCode(), Toast.LENGTH_SHORT);
info.show();
}
}
}
);
}
}
在接收端,我有 WearableListenerService 接收消息。 (请注意,电话和移动设备都有 WearableListenerService 类,因此通信是双向的。
Per the 发送同步数据训练 http://developer.android.com/training/wearables/data-layer/index.html:
可穿戴监听服务(用于服务)
扩展 WearableListenerService 使您可以侦听服务中的重要数据层事件。系统管理 WearableListenerService 的生命周期,在需要发送数据项或消息时绑定到服务,并在不需要工作时取消绑定服务。*
数据监听器(用于前台活动)
在活动中实现 DataListener 可以让您在活动位于前台时侦听重要的数据层事件。使用它而不是 WearableListenerService 可以让您仅在用户主动使用您的应用程序时监听更改。
如果您只想在 Activity 打开时接收消息(忽略关闭时发送的任何消息),您可以添加MessageApi.MessageListener http://developer.android.com/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html到您的活动。
如果您希望无论您的应用程序是否打开都接收消息(确保您不会丢弃从可穿戴设备发送的消息),那么您应该使用WearableListenerService
(note: WearableListenerService
does not持续运行 - 仅当发送新消息/节点连接/数据层更改时启动,并在没有更多消息时停止)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)