Android Wear - 在没有WearableListenerService的情况下从Wear接收消息?

时间:2014-11-25 15:32:13

标签: android wear-os

我正在开发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类,因此通信是双向的。

1 个答案:

答案 0 :(得分:2)

根据Sending an Syncing data training

  

WearableListenerService (对于服务)

     

扩展WearableListenerService使您可以侦听服务中的重要数据层事件。系统管理WearableListenerService的生命周期,在需要发送数据项或消息时绑定到服务,并在不需要工作时解除绑定服务。*

     

DataListener (用于前台活动)

     

在活动中实现DataListener可让您在活动位于前台时侦听重要的数据层事件。使用此代替WearableListenerService,您只能在用户正在使用您的应用时监听更改。

如果您只想在活动开启时接收消息(忽略关闭时发送的任何消息),您可以为活动添加MessageApi.MessageListener

如果您希望接收应用是否已开启的消息(确保您不会丢弃从“可穿戴设备”发送的消息),那么您应该使用WearableListenerService(注意:WearableListenerService做< strong> not 持续运行 - 仅在发送新消息/节点连接/数据层更改时启动,并且在没有其他消息时停止。)