Как я могу избежать оптимизации батареи устройств Samsung? (С6, С7 и С8)

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

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

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

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

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

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


person Xose    schedule 09.08.2017    source источник
comment
ты нашел решение? Если вы, пожалуйста, помогите мне. Заранее спасибо.   -  person fahad_sust    schedule 22.10.2017
comment
Нет, у меня все еще есть проблема...   -  person Xose    schedule 27.11.2017
comment
См.: seap.samsung.com/forum-topic /   -  person ManmeetP    schedule 29.11.2017
comment
Просто чтобы получить разъяснение: я предполагаю, что, поскольку это работает на других телефонах, служба запускается как липкая служба. Можешь подтвердить?   -  person tir38    schedule 29.03.2018


Ответы (1)


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

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

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

person tir38    schedule 29.03.2018