在蓝牙连接事件中发送消息时不接收AppMessage回调

时间:2016-02-18 16:16:19

标签: asynchronous bluetooth callback pebble-watch pebble-appmessage

标题总结了一下。同样的问题是here。发布SO以查看我是否可以获得任何帮助。我还制作了一个almost minimal project来演示我面临的问题,所以后面的链接指向所提到的代码片段。

对于我目前正在做的事情没什么好看的:

  1. 我的表盘是notified,使用.pebble_app_connection_handler与手机的蓝牙连接已启动。
  2. 在我设置的bluetooth callback中,我使用app_message_outbox_send() send message to the phone calls an IntentService。当然,当BT连接启动时。
  3. 我的Android应用有一个BroadcastReceiver,可以收听这些消息并calculates the data
  4. 经过一段时间后,此IntentService pushes it to the watchsets itself to run againdocs
  5. 我的期望

    1. 当BT连接启动时,将调用连接处理程序。
    2. app_message_outbox_send()返回一个值,告知消息启动是否有任何错误。通常,这是APP_MSG_OK,但它可以是APP_MSG_BUSY,我完全清楚这一点。
    3. 调用应用消息回调(app_message_register_inbox_received和好友)以指示向手机发送消息的异步过程是否真的有效。这在{{3}}。
    4. 中说明

      我看到了什么

      加载表盘时会发生预期的步骤,因为我会手动触发更新。但是,当BT连接事件触发更新时,会发生预期的步骤1和2,但不会执行步骤3.

      当我在第2步中获得APP_MSG_OK时,这尤其令人恼火,因为我应该合理地期望手表上的所有内容都正常,我应该准备好在应用内接收某些内容消息回调。基本上,文档告诉我等待永远不会到达的电话。

      这种情况100%发生

      感谢您的帮助。我有另一个解决方案,使用手表来跟踪更新间隔,但我相信这个允许我通过利用最近的Android功能节省更多电池。

1 个答案:

答案 0 :(得分:3)

来自文档:

  

还要通知与任何PebbleKit相关的连接事件   与此watchapp关联的伴随应用程序,也为其分配处理程序    pebblekit_connection_handler 字段。这将在调用时调用   与PebbleKit应用程序的连接状态发生了变化。

也许这就是你需要的