2016-06-10 2 views
-1

Я разрабатываю приложение, в котором местоположение пользователя отслеживается только с помощью провайдера GPS (режим только для устройства местоположения). Поэтому, если пользователь устанавливает приоритет своего местоположения на приблизительное местоположение с использованием Wifi и Data, приложение не будет работать так, как было запланировано. Поэтому мне нужно программно выбрать пользовательский режим выбора местоположения (высокая точность, приблизительное местоположение или устройство) и отобразить соответствующие диалоговые окна. Какой был бы чистый способ достичь этого?Как узнать программно, какой режим местоположения включен?

+0

Посмотрите на ответ здесь: http://stackoverflow.com/questions/30467850/monitoring-geofences-after-user-turns-location-service-off-and-on/30580898 –

+0

@DanielNugent Я не хочу, чтобы такой тяжелый вес, как широковещательный приемник. Я чувствую, что ответ Карена - это путь. Дай мне проверить. –

+0

Этот связанный ответ содержит код, который вам нужен, но и многое другое. Я просто разместил здесь ответ, который имеет только код, который вам нужен. –

ответ

1

Вы можете LocationProvider.getAccuracy: https://developer.android.com/reference/android/location/LocationProvider.html

Из документов: INT getAccuracy() Возвращает константу, описывающую горизонтальную точность этого провайдера. Если поставщик возвращает более тонкое зерно или точное местоположение, возвращается ACCURACY_FINE, в противном случае, если местоположение приблизительное, возвращается ACCURACY_COARSE.

+0

Спасибо, посмотрим! –

0

1, чтобы проверить режим поставщика (GPS, сеть, подвал-идентификатор)

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
//get currently used providers 
locationManager.getProviders(true); 

2, показать диалоговое

new AlertDialog.Builder(this). 
setTitle("Title"). 
setMessage("content"). 
show(); 
0

Обратите внимание, что ваше приложение будет работать как для GPS только режим и также режим High Accuracy, так как с обеих настроек GPS включен.

Чтобы проверить, включен ли GPS, это будет делать трюк.

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

if (!isGpsEnabled) { 
    //show your alert here 
} 
Смежные вопросы