0

Контекст: Как создать механизм Timer/AlarmManger, который позволяет LocalClient подключаться в течение двух минут до опроса местоположения. Ниже я вставил свою попытку задержать за две минуты до опроса местоположения, но он не работает в режиме сна.LocationClient Timer in Service with WakeLock

Возможные решения: Я мог бы использовать AlarmManager. Однако это заставит меня создать SECOND-сервис, а затем сделать ссылку на один LocationClient очень сложной. Я мог бы также следовать подходу этого человека (Using Google Play Services LocationClient in background service), где в методе onConnected он выполняет опрос местоположения.

Я хотел бы какие-либо рекомендации относительно того, что я должен смотреть в

В моей onStartCommand методом ...

wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 

    wl.acquire(); 

    //Getting and Posting Location 
    Log.i("localwordservice", "Creating and Connecting mLocationClient"); 
    mLocationClient = new LocationClient(this, this, this); 
    mLocationClient.connect(); 

    Timer theTimer = new Timer(); 
    theTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      if(checkIfGooglePlay()) { 
       System.out.println("TIMER is now iniating post location"); 
       getPostLocation(); 
       System.out.println("wake lock being released!"); 
       wl.release(); 
       System.out.println("The Service is being stopped!"); 
       stopSelf(); 
      } 
     } 
    }, TWO_MINUTES); 

ответ

2

Это не то, как работает LocationClient. Вместо этого вам нужно подождать две минуты, подключиться к службам местоположения, а затем получить текущее местоположение, вызвав getLastLocation(). В качестве альтернативы вы можете сразу вызвать requestLocationUpdates() с продолжительностью 2 минуты, затем либо закрыть соединение, либо отключить обновления.

+0

Привет @Joe, я думал, что LocationClient необходимо определить, сказать, чтобы подключиться, подождать некоторое время, чтобы получить приличное соединение, использовать это соединение через .getLastLocation(), а затем отключиться. Я очень ценю ваши отзывы! – NumenorForLife