API местоположения Google: запрашивать обновления местоположения с ожидающим намерением?

Я начал внедрять Google Location API с помощью этого руководства.

Мне удалось заставить его работать в моем приложении довольно хорошо, он обновляет мое местоположение через правильные промежутки времени и т. д. Теперь я работаю над тем, как обновить свое местоположение, когда устройство находится в спящем режиме. Согласно документации, этот метод это путь:

public void requestLocationUpdates (LocationRequest request, PendingIntent callbackIntent);

Мой вопрос в том, как мне настроить этот PendingIntent и как с ним справиться? Я видел учебники о том, как обрабатывать другие типы намерений, но я не уверен, как их применить к этому.


person HigiPha    schedule 24.07.2013    source источник


Ответы (1)


Вы можете либо зарегистрировать приемник широковещательной рассылки, либо активность через ожидающее намерение. Пример примера регистрации получателя бортовой трансляции:

    String proximitys = "ACTION";
    IntentFilter filter = new IntentFilter(proximitys);
    registerReceiver(mybroadcast, filter);
    Intent intent = new Intent(proximitys);
    PendingIntent proximityIntent = PendingIntent.getBroadcast(this, 0,
            intent, PendingIntent.FLAG_CANCEL_CURRENT);
    locationManager.requestLocationUpdates(provider, mintime, mindistance,
            proximityIntent);

Ваш широковещательный приемник:

public class ProximityIntentReceiver extends BroadcastReceiver {

    @SuppressWarnings("deprecation")
    @Override
    public void onReceive(Context arg0, Intent intent) {
           //action to be performed
    }
person Srikanth Roopa    schedule 24.07.2013
comment
Спасибо за Ваш быстрый ответ! Однако у меня есть некоторые вопросы по коду. Что такое mybroadcast и где вы это декларируете? И я использую не LocationManager, а LocationClient, будет ли этот код работать в любом случае? - person HigiPha; 24.07.2013
comment
извините, я забыл упомянуть, что mybroadcast - это BroadcastReceiver, который вы хотите послушать, я никогда не работал с клиентом определения местоположения, но если он может передать ожидающее намерение, он должен работать :) - person Srikanth Roopa; 24.07.2013
comment
Я попробовал, и он обновляет местоположение, как LocationListener: он отлично работает, когда экран горит, но когда я перевожу его в спящий режим или перехожу на главный экран и запускаю другие приложения, он не будет обновление местоположения, к сожалению =/ - person HigiPha; 24.07.2013
comment
я уже ответил здесь #17543889">ТАК это гарантирует, что процессор работает.. - person Srikanth Roopa; 24.07.2013
comment
Если я использую этот подход, не будет ли ненужным запрашивать обновления у LocationClient с помощью requestLocationUpdates и вместо этого использовать getLastLocation? Однако похоже, что эта функция не ищет текущее местоположение, а получает его пассивно. Большое спасибо, что уделили время моей проблеме :) Просто хочу исправить ее в хорошем смысле. - person HigiPha; 24.07.2013
comment
@Sigfrid Johansson, можешь ли ты точно сказать ему, что ты пытаешься сделать, чтобы я мог дать лучшее решение, так как вопрос был о том, что он находится в ожидании намерений, я ответил на это :) - person Srikanth Roopa; 24.07.2013
comment
О, да, это правильно! Я думаю, что в этом случае мне придется задать новый вопрос. Ваш ответ об ожидающих намерениях сработал просто отлично, спасибо :) - person HigiPha; 25.07.2013
comment
@Зигфрид Йоханссон :) - person Srikanth Roopa; 25.07.2013