Получить местоположение каждые 15 секунд, даже в режиме дремоты - PullRequest
0 голосов
/ 12 мая 2018

Я хочу получать местоположение каждые 15 секунд, и все в порядке, но в режиме ожидания (глубокий сон) мой обработчик не работает, в любом случае? AlarmManager - хороший способ, но ограничение времени 1 мин не повторяется в режиме ожидания.

@ReactMethod
public static void setAlarm()
{
  int interval = 50; // delay in secs
  AlarmManager am = (AlarmManager) reactContext.getSystemService(Context.ALARM_SERVICE);
  Intent intent = new Intent(reactContext, AlarmManagerReceiver.class);
  PendingIntent pi = PendingIntent.getBroadcast(reactContext, 0, intent, 0);
  am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval*1000 , pi);

}

Приемник:

public class AlarmManagerReceiver extends BroadcastReceiver {

      @Override
      public void onReceive(Context context, Intent intent) {

          DoRoutine();

      }

}

1 Ответ

0 голосов
/ 12 мая 2018

Я хочу получать местоположение каждые 15 секунд, и все в порядке

Не совсем.

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

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

В-третьих, на Android 8.0 + , вы не будете получать исправления местоположения где-либо близко к этому часто, если только ваше приложение не на переднем плане.

но в режиме ожидания (глубокий сон) мой обработчик не работает, в любом случае?

Шаг # 1: Надеюсь, что пользователь добавит ваше приложение в белый список оптимизации батареи

Шаг № 2: Использование службы переднего плана

Шаг № 3: Запросить обновление местоположения каждые 15 секунд (например, requestLocationUpdates() на LocationManager)

Шаг # 4: используйте частичный WakeLock, чтобы оставить устройство включенным (даже если экран выключен)

Шаг № 5: Надеюсь, что пользователи не убьют вас за такой серьезный разряд батареи

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