Как я могу избежать оптимизации батареи устройств Samsung? (S6, S7 и S8)

У меня есть приложение Android для отслеживания GPS, которое получает непрерывные push-сообщения, когда кому-то требуется позиция пользователя.

Каждый раз, когда я получаю push, я запускаю службу определения местоположения, которая отправляет позиции в течение X времени, пока он получает push-сообщения.

Проблема началась с системы Android Doze, которая блокирует запросы HTTP. Я мог получать сообщения, но никогда не мог отправить свою текущую позицию (я получил тайм-ауты http-подключений и ошибки в ping в Google). Но я мог решить эту проблему с помощью запроса ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS и программного добавления приложения в белый список батарей.

Теперь приложение отлично работает на всех устройствах, кроме устройств Samsung с S6, которые имеют систему "Smart manager". Я попытался вручную добавить приложение в белый список аккумуляторов Samsung (Настройки -> Обслуживание устройства -> Аккумулятор -> Приложения без контроля), но проблема не устранена.

Если я через некоторое время держу устройство с выключенным экраном и без зарядки, он перестает отправлять позиции, но он все равно получает push-сообщения.

Может кто-нибудь помочь мне с волшебным решением? Я видел предполагаемый "список пакетов" со множеством приложений, которые Samsung автоматически включает в белый список (например, Facebook, Whatsapp, Life360), но я не смог найти то, что мне нужно сделать, чтобы автоматически добавить свое приложение в этот список.

1 ответ

Исходя из ссылки, предоставленной @ManmeetP, похоже, что вы можете использовать только SDK от Samsung "Knox": ApplicationPolicy.addPackageToBatteryOptimizationWhiteList()

https://seap.samsung.com/api-references/android-standard/reference/android/app/enterprise/ApplicationPolicy.html

Это будет означать включение этого SDK в ваше приложение для всех ваших пользователей =(

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