Как я могу проверить, включен ли GPS, прежде чем пытаться его использовать?
У меня есть следующий код, и это не хорошо, потому что иногда GPS занимает очень много времени
Как я могу сделать следующее:
- Проверьте, включен ли GPS.
- Используйте GPS, если он включен, в противном случае используйте поставщика сети.
- Если GPS занимает более 30 секунд, используйте сеть.
Я могу сделать это с помощью собственной логики с использованием времени или Thread.sleep, но я думаю, что может быть более простой способ
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
locationCallback(location);
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
Ответы
Ответ 1
Нет стандартного способа, вы должны сделать это самостоятельно, используя:
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
//Do what you need if enabled...
}else{
//Do what you need if not enabled...
}
И это разрешение в манифесте:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Как рекомендация, если GPS не включен, обычно стандарт указывает на всплывающее окно "Настройки местоположения", поэтому пользователь может его специально включить...
Надеюсь, что это поможет.
Привет!
Ответ 2
Просто используя это, вы можете проверить GPS
доступность
LocationManager mlocManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);;
boolean enabled = mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
Ответ 3
Думаю, вы могли бы использовать код в своем ответе на: Служба местоположения GPS Force закрыта
Он дает вам метод обратного вызова для GPS-исправления и изменения местоположения, которые могут быть очень удобными. Это также упрощает изменение реализации GPSTracker для переключения в сеть, если GPS занимает слишком много времени, чтобы получить первое исправление.