Не получает ответные вызовы AppMessage при отправке сообщения в событии подключения Bluetooth

Название подводит итог. Тот же вопрос здесь. Публикация на SO, чтобы увидеть, могу ли я получить какую-либо помощь. Я также сделал почти минимальный проект, чтобы продемонстрировать проблему, с которой я столкнулся, поэтому ссылки, которые следуют, указывают на упомянутый фрагмент кода.

Ничего особенного в том, что я сейчас делаю:

  1. Мой watchface уведомляется, что соединение Bluetooth с телефоном установлено, используя .pebble_app_connection_handler,
  2. В этом bluetooth обратном вызове, который я настроил, я отправляю сообщение на телефон, используя app_message_outbox_send(), Когда соединение BT установлено, конечно.
  3. Мое приложение для Android имеет BroadcastReceiver который слушает эти сообщения и вызывает IntentService,
  4. это IntentService вычисляет данные, отправляет их на часы и через некоторое время снова запускает себя.

Что я ожидаю:

  1. Когда соединение BT установлено, вызывается обработчик соединения.
  2. app_message_outbox_send() вернуть значение, сообщающее, были ли ошибки при инициации сообщения. Обычно это APP_MSG_OK, но это может быть APP_MSG_BUSY и я прекрасно это знаю.
  3. Обратные вызовы сообщений приложения (app_message_register_inbox_received и друзья) вызываться, чтобы указать, действительно ли работает асинхронный процесс отправки сообщения на телефон. Об этом говорится в документах.

Что я вижу:

Ожидаемые шаги происходят при загрузке watchface, потому что я запускаю обновление вручную. Однако, когда обновление инициируется событием соединения BT, ожидаются шаги 1 и 2, но не шаг 3.

Это особенно усугубляет, когда я получаю APP_MSG_OK на шаге 2, потому что я должен разумно ожидать, что все в порядке, и я должен подготовить себя к получению чего-либо внутри обратных вызовов сообщений приложения. По сути, мне сказали, что документы ждут звонка, который никогда не приходит.

Это происходит в 100% случаев.

Спасибо за любую помощь. У меня есть другое решение, которое работает, используя часы для отслеживания интервала обновления, но я считаю, что это позволяет мне сэкономить больше энергии за счет использования последних функций Android.

1 ответ

Из документации:

Чтобы также получать уведомления о событиях соединения, связанных с любыми сопутствующими приложениями PebbleKit, связанными с этим watchapp, также назначьте обработчик в поле pebblekit_connection_handler. Это будет вызвано, когда состояние соединения с приложением PebbleKit изменится.

Может быть, это то, что вам нужно

Другие вопросы по тегам