2016-08-28 7 views
0

В моем приложении пользователь может запустить службу отслеживания, которая использует LocationManager для запроса местоположения каждые X секунд.Спящий режим Android и LocationManager

Пользователь сообщил, что на своем устройстве (Galaxy Tab S2), когда устройство переходит в спящий режим, отслеживание останавливается через несколько минут.

У меня есть два вопроса:

  • есть способ поместить мое устройство находится в спящем режиме (для тестирования)?
  • Каким будет влияние частичной блокировки слежения? На моем устройстве процессор все равно не спит, поэтому я думаю, что это не повлияет, я прав? Или мне нужно использовать AlarmManager, чтобы вручную получить местоположение каждые х секунд (что, кстати, должно быть imho вариантом LocationManager)?
+0

Насколько я знаю, менеджер местоположений приобретает сам wakelock, когда он запрашивается для обновления местоположения, остановка отслеживания местоположения может быть связана с тем, что ваша служба была убита системой Android по какой-то причине. Вы обслуживаете сервис, останавливаясь должным образом, например, снова начинаете службу или с помощью диспетчера аварийных сообщений, чтобы сохранить свое обслуживание, если оно было убито системой Android. –

+0

Ну, мой сервис липкий, и я уже видел, что он убит и автоматически перезапущен. Вы уверены, что LocationManager использует блокировки от бодрствования? Из того, что я нашел в Интернете, это не так. –

ответ

0

1) Есть ли способ поместить устройство в спящий режим (для тестирования)?

Да, с помощью PowerManager. Прочитано here. Не забудьте включить следующее разрешение.

android.permission.DEVICE_POWER 

Существует простой способ предложен в this SO ответить, используя Device Administration надежду, что решает проблему вам.

2) Я бы предложил вам пройти проект github this, чтобы узнать, как использовать Partial Wakelock и Alarmmanager эффективно, чтобы получить Местоположение. Это отличная отправная точка, и вы должны уметь много хороших советов о том, как действовать.

+0

Можете ли вы подробно остановиться на # 1, пожалуйста? Вы ссылаетесь на метод goToSleep, указанный здесь: http://stackoverflow.com/questions/9734353/how-to-put-android-to-standby-programmatically? Я не могу найти этот метод ни в документе, ни в Android Studio. Спасибо за предложение этого проекта, это может помочь, если я решит пойти с параметром AlarmManager. –

+0

@TimAutin Я отредактировал ответ для # 1, надеюсь, это полезно, дайте мне знать, если это сработает. С уважением –

+0

Спасибо, я проверю его в конце недели и дам вам знать (я сейчас работаю над другим проектом)! –