通过Android Wear通知向手机发送消息

时间:2014-10-25 16:30:49

标签: wear-os remote-control android-wear-data-api

我是Android Wear编程的新手,我在开发此应用程序时学习。

它只是一个媒体控制器 - 这样用户就可以按下手表上的播放/暂停状态,播放视频的手机会接收并处理它。

到目前为止我做了什么:

我已经设置了Android Wear应用,以便我可以从移动应用收到通知。

Intent notificationIntent = new Intent(this, NotificationActivity.class);
                        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                            .setSmallIcon(R.drawable.ic_launcher)
                            .extend(new NotificationCompat.WearableExtender()
                            .setContentIcon(R.drawable.ic_launcher)                                          .setCustomSizePreset(NotificationCompat.WearableExtender.SIZE_FULL_SCREEN)
                            .setDisplayIntent(pendingIntent)
                            .addAction(new NotificationCompat.Action.Builder(R.drawable.ic_launcher, "Hej", pendingIntent).build())
                                    .setContentAction(0));

((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
.notify(NOTIFICATION_ID, notificationBuilder.build());

上面的代码就是我用来在手表上显示我的遥控卡的代码。但是,我想要实现的是,当按下此按钮时,它应该向手机发送消息。

现在我的问题是:

  • 我只能将新意图设置为动作。这真的是将一条简单消息(如字符串或整数)发送回手机的正确方法吗?就像一个只发送消息然后命运的活动?如果是这样,我如何将API纳入该活动,以便将消息发送到手机?
  • 如何发送此信息并通过电话接收?我在指南中找不到任何内容......我已经看到有迹象表明,当Wear设备发送消息时,我可以在手机上开始练习,但由于我有一个消息,这绝对不是我想做的事情。在那里开展活动......

谢谢!

1 个答案:

答案 0 :(得分:1)

所以这就是我解决问题的方法:

在Android Wear模块上,我使用了WearableListenerService。从我的移动模块,我只需使用Wearable DataAPI向其发送数据事件。 WearableListenerService中的onDataChanged函数接收它们,所以我只是将它子类化并实现了自己的。

在此方法中,我使用提供的信息来创建和显示新的通知。从notfication活动中,我请求一个ListenerService类的实例,并使用它将消息发送回移动设备。

移动设备上的活动然后实现MessageAPI.MessageListener并且通信正常工作。

我在路上学到的一些教训:

  • PutDataRequest request = putDataMapRequest.asPutDataRequest();         Wearable.DataApi.putDataItem(wearApiClient,request);

    请求需要随时更改。所以,即使我只对第一篇文章感兴趣,也没有发生,因为我没有改变数据。所以当我使用putString时,我不得不添加一个计数器做String并递增它。像:

    putDataMapRequest.getDataMap()。putString(“path”,“hello”+(count ++));

  • 当活动尚未在设备上运行时,将使用侦听器服务。因此,如果您想通过磨损开始移动活动 - 在移动模块中创建服务类。如果您想在手机上发生某些事情时在磨损设备上显示通知 - 请在磨损模块中使用lsitener服务。如果您只想在两个正在运行的应用程序之间进行通信 - 请使用消息或数据API。