Работа с режимом Android-Doze в моем приложении мониторинга BLE во время сна пользователя

1

Я сделал устройство, которое контролирует здоровье человека во время сна, и оно подключается к смартфону через BLE.

Он отлично работает с приложением iOS. Но так как режим Doze появился на Android-мире. С этим очень трудно справиться, потому что мое устройство работает во время сна.

Основная особенность заключается в том, что он обнаруживает особую опасность и уведомляет пользователя, пока он спит с устройством. Мне нужно подключение к сети, когда оно происходит.

Многие статьи говорят мне, что я могу использовать сеть даже в режиме доз, если мое приложение находится в белом списке. Но это не кажется правдой после того, как я проверил режим Doze. Я прав?

Я могу гарантировать, что могу найти свое приложение в списках, когда я запускаю

adb shell dumpsys deviceidle

Каков наилучший подход, который я могу предпринять, чтобы приложение работало правильно?

  • услуги переднего плана
  • диспетчер аварийных сообщений с помощью SetExactAndAllowWhileIdle.
  • GCM (означает push, right?)
  • что-нибудь еще

Любые советы помогут мне. Спасибо.

Изменить

К сожалению, я тестировал с использованием GCM, но он просто пробуждает мое приложение за короткое время. Это означает, что я должен отправить GCM столько, сколько хочу, чтобы он не спал. Я не думаю, что смогу использовать его.

Теги:
bluetooth
background
bluetooth-lowenergy

1 ответ

1
Лучший ответ

Многие статьи говорят мне, что я могу использовать сеть даже в режиме доз, если мое приложение находится в белом списке. Но это не кажется правдой после того, как я проверил режим Doze. Я прав?

Вы не правы. Одним из ограничений доза, которые сняты, когда ваше приложение включено в белый список, является возможность использовать сеть, когда активна доза.

Приложение, включенное в белый список, может использовать сеть и удерживать частичные блокировки во время Doze и App Standby. Тем не менее, другие ограничения по-прежнему действуют на приложение с белым списком, как и на другие приложения. Например, задания и синхронизация приложений с белыми списками откладываются (на уровне API 23 и ниже), и его обычные аварийные сигналы AlarmManager не срабатывают.

От здесь.

Другими словами: вы должны иметь возможность использовать сеть в дозе, если вы находитесь в белом списке.

Каков наилучший подход, который я могу предпринять, чтобы приложение работало правильно?

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

Вы должны знать, что у вас есть веская причина использовать службу переднего плана, так как пользователь знает о них, но я думаю, что у вас есть монитор мониторинга и т.д.

Примечание. Вы должны использовать только службу переднего плана для задач, которые пользователь ожидает, что система будет выполняться немедленно или без перерывов. Такие случаи включают загрузку фотографии в социальные сети или воспроизведение музыки, даже если приложение для музыкального проигрывателя не находится на переднем плане. Вы не должны запускать службу переднего плана просто, чтобы система не определяла, что ваше приложение не работает.

Из здесь.

  • 0
    Привет Тим. Спасибо за ваш очень добрый ответ. Я действительно ценю твою помощь. Я попробую еще раз, как вы сказали, и поделюсь результатом. Спасибо!
  • 0
    Служба переднего плана только предотвратит зависание / уничтожение вашего приложения в режиме ожидания приложения stackoverflow.com/questions/35811042/…
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню