Прослушиватель местоположения Android для всех служб - PullRequest
1 голос
/ 03 апреля 2011

Я нашел множество примеров создания прослушивателя местоположения, где вы предоставляете конкретного поставщика, например:

LocationManager lm =
    (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

Однако мне не нужно точное местоположение, но я возьму лучшее из доступного. Есть ли способ создать прослушиватель, который работает наилучшим образом из доступных в данный момент времени, не создавая прослушиватель для каждого поставщика?

например. Используйте GPS, если он доступен, если нет, Сеть и т. Д. Кроме того, это виджет, поэтому я не хочу проверять, что доступно, а затем создать слушатель для этого, так как виджет будет работать в течение длительного времени и может жить через включение / отключение поставщиков.

Спасибо за помощь

1 Ответ

1 голос
/ 03 апреля 2011

Рассматривали ли вы использование PASSIVE_PROVIDER? Это в сочетании с getLastKnownLocation() может дать вам большую часть пути к тому, что вы хотите ... Сначала вы бы назвали getLastKnownLocation(), чтобы определить местоположение, если оно уже было известно устройству, тогда PASSIVE_PROVIDER будет прослушивать обновления от любого поставщика местоположения (т. е. запросы местоположения, инициированные из любого другого приложения на устройстве).

Возможен сценарий, когда никакое другое приложение не запрашивает местоположение, поэтому вы, вероятно, захотите вызвать хотя бы одно начальное исправление местоположения, используя GPS_PROVIDER или NETWORK_PROVIDER.

...