2014-11-01 3 views
2

до сих пор, когда вы использовали LocationClient, чтобы получить последнее известное местоположение пользователя, у меня не было проблем, например тестирование на Jelly Bean.Распознавание местоположения на KitKat

У меня есть телефон KitKat для тестирования, и я обнаружил, что в настройках -> Местоположение, которое называется «Только устройство», есть параметр DEFAULT, и он исключительно полагается на GPS для запуска, подключения и получения местоположения. Это займет A WHILE. Кроме того, когда Im в помещении, он не может найти никакого места.

Если я перехожу к настройкам и переключаюсь на «Высокая точность», я возвращаюсь к своему приложению, а местоположение BAM находится прямо там.

Вопрос:

Как определить, какой из этих трех параметров местоположения устанавливается на KitKat и попросить пользователя изменить его (или непосредственно изменить это сам)

три настройки:

-device только

-Зарядное режим экономии

-ВЫСОКОГО точность

ответ

1

Насколько я знаю, вы можете индивидуально определить, какие службы включены/отключены с помощью класса LocationManager.

locationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE); 
isGPSEnabled = locationManager 
       .isProviderEnabled(LocationManager.GPS_PROVIDER); 
isNetworkEnabled = locationManager 
       .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

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

if(!isGPSEnabled) { 
    startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
} 
if(!isNetworkEnabled) { 
    startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); 
} 

EDIT: Вы можете использовать LocationManager класс, чтобы просто получить ваши настройки вправо, а затем использовать LocationClient на самом деле собирают информацию о местоположении.

+0

Я просто прекратил использовать класс LocationManager пару недель назад после прочтения многочисленных статей о том, что это старый API местоположения и как LocationClient намного лучше и новый способ. И действительно, после переключения много проблем ушло. Я не хочу возвращаться к его использованию. –

+0

Это так? Я не знаю. Он не упоминается на официальной странице: http://developer.android.com/reference/android/location/LocationManager.html :) – shyam

+1

Посмотрите на эту дискуссию. похоже, что есть плюсы и минусы для обоих ... http://stackoverflow.com/questions/18916273/locationclient-vs-locationmanager, возможно, я использую их комбинацию? –