我正在开发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类,因此通信是双向的。
答案 0 :(得分:2)
根据Sending an Syncing data training:
WearableListenerService (对于服务)
扩展WearableListenerService使您可以侦听服务中的重要数据层事件。系统管理WearableListenerService的生命周期,在需要发送数据项或消息时绑定到服务,并在不需要工作时解除绑定服务。*
DataListener (用于前台活动)
在活动中实现DataListener可让您在活动位于前台时侦听重要的数据层事件。使用此代替WearableListenerService,您只能在用户正在使用您的应用时监听更改。
如果您只想在活动开启时接收消息(忽略关闭时发送的任何消息),您可以为活动添加MessageApi.MessageListener。
如果您希望接收应用是否已开启的消息(确保您不会丢弃从“可穿戴设备”发送的消息),那么您应该使用WearableListenerService
(注意:WearableListenerService
做< strong> not 持续运行 - 仅在发送新消息/节点连接/数据层更改时启动,并且在没有其他消息时停止。)