В моем приложении я хочу узнать местоположение пользователя и показать его на карте (google maps).В настройках андроид устройства вы можете проверить
- Использовать беспроводные сети
- Использовать спутники GPS
Когда пользователь запускает карту активности, я показываю диалогв котором пользователь может выбрать, получать свое текущее местоположение или нет.
Old code deleted
Если пользователь хочет получить свое местоположение, я проверяю, включен ли gps.Если нет, я запускаю настройки.Еще я пытаюсь получить местоположение.Но даже когда GPS активен и «использует беспроводные сети», он не получит местоположение.Есть ли решение, чтобы проверить, включен ли «Использовать беспроводные сети».Или какую часть моего кода мне нужно изменить, чтобы получить местоположение только по сигналу GPS?
Спасибо
ПРАВКА mycurrentcode:
boolean isGps = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
boolean isNetwork = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!isGps && !isNetwork){
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
} else if(isGps && !isNetwork) {
String bestProvider = LocationManager.GPS_PROVIDER;
Location location = lm.getLastKnownLocation(bestProvider);
Toast.makeText(MapsTabActivitiy.this, "Location niet beschikbaar.", Toast.LENGTH_SHORT).show();
} else if(!isGps && isNetwork) {
String bestProvider = LocationManager.NETWORK_PROVIDER;
Location location = lm.getLastKnownLocation(bestProvider);
if(location == null){
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} else if (location != null){
mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6)));
mapcontroller.setZoom(15);
}
}
else {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String bestProvider = lm.getBestProvider(criteria, false);
Location location = lm.getLastKnownLocation(bestProvider);
if(location == null){
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} else if (location != null){
mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6)));
mapcontroller.setZoom(15);
}
}
Поэтому я проверяю с помощью isProviderEnabled для GPS_PROVIDERИ NETWORK_PROVIDER.И с, если, иначе, если я изменю, как получить местоположение.Единственный случай, который мне нужно найти - это случай 2 (иначе if (isGps &&! IsNetwork) {}).Получить местоположение по сигналу GPS.