Не получает ответные вызовы AppMessage при отправке сообщения в событии подключения Bluetooth
Название подводит итог. Тот же вопрос здесь. Публикация на SO, чтобы увидеть, могу ли я получить какую-либо помощь. Я также сделал почти минимальный проект, чтобы продемонстрировать проблему, с которой я столкнулся, поэтому ссылки, которые следуют, указывают на упомянутый фрагмент кода.
Ничего особенного в том, что я сейчас делаю:
- Мой watchface уведомляется, что соединение Bluetooth с телефоном установлено, используя
.pebble_app_connection_handler
, - В этом bluetooth обратном вызове, который я настроил, я отправляю сообщение на телефон, используя
app_message_outbox_send()
, Когда соединение BT установлено, конечно. - Мое приложение для Android имеет
BroadcastReceiver
который слушает эти сообщения и вызываетIntentService
, - это
IntentService
вычисляет данные, отправляет их на часы и через некоторое время снова запускает себя.
Что я ожидаю:
- Когда соединение BT установлено, вызывается обработчик соединения.
app_message_outbox_send()
вернуть значение, сообщающее, были ли ошибки при инициации сообщения. Обычно этоAPP_MSG_OK
, но это может бытьAPP_MSG_BUSY
и я прекрасно это знаю.- Обратные вызовы сообщений приложения (
app_message_register_inbox_received
и друзья) вызываться, чтобы указать, действительно ли работает асинхронный процесс отправки сообщения на телефон. Об этом говорится в документах.
Что я вижу:
Ожидаемые шаги происходят при загрузке watchface, потому что я запускаю обновление вручную. Однако, когда обновление инициируется событием соединения BT, ожидаются шаги 1 и 2, но не шаг 3.
Это особенно усугубляет, когда я получаю APP_MSG_OK
на шаге 2, потому что я должен разумно ожидать, что все в порядке, и я должен подготовить себя к получению чего-либо внутри обратных вызовов сообщений приложения. По сути, мне сказали, что документы ждут звонка, который никогда не приходит.
Это происходит в 100% случаев.
Спасибо за любую помощь. У меня есть другое решение, которое работает, используя часы для отслеживания интервала обновления, но я считаю, что это позволяет мне сэкономить больше энергии за счет использования последних функций Android.
1 ответ
Из документации:
Чтобы также получать уведомления о событиях соединения, связанных с любыми сопутствующими приложениями PebbleKit, связанными с этим watchapp, также назначьте обработчик в поле pebblekit_connection_handler. Это будет вызвано, когда состояние соединения с приложением PebbleKit изменится.
Может быть, это то, что вам нужно