如何以编程方式找出打开了哪种位置模式?
How do I find out programmatically which mode of Location is turned on?
我正在开发一个应用程序,在该应用程序中,仅使用 GPS 提供商(位置的仅设备模式)来跟踪用户的位置。因此,如果用户将其位置优先级设置为使用 Wifi 和数据的近似位置,应用程序将无法按预期工作。因此,我需要以编程方式检查用户选择的位置模式(高精度、近似位置或仅设备)并显示相应的对话框。实现这一目标的干净方法是什么?
您可以LocationProvider.getAccuracy:
https://developer.android.com/reference/android/location/LocationProvider.html
来自文档:
int getAccuracy ()
Returns 描述此提供程序的水平精度的常量。如果提供者 returns 更细粒度或精确位置,则返回 ACCURACY_FINE,否则如果位置只是近似值,则返回 ACCURACY_COARSE。
1、检查提供商模式(gps、网络、cellar-id)
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();
请注意,您的应用将适用于仅 GPS 模式和高精度模式,因为这两种设置都启用了 GPS。
为了检查 GPS 是否启用,这就可以了。
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!isGpsEnabled) {
//show your alert here
}
我正在开发一个应用程序,在该应用程序中,仅使用 GPS 提供商(位置的仅设备模式)来跟踪用户的位置。因此,如果用户将其位置优先级设置为使用 Wifi 和数据的近似位置,应用程序将无法按预期工作。因此,我需要以编程方式检查用户选择的位置模式(高精度、近似位置或仅设备)并显示相应的对话框。实现这一目标的干净方法是什么?
您可以LocationProvider.getAccuracy: https://developer.android.com/reference/android/location/LocationProvider.html
来自文档: int getAccuracy () Returns 描述此提供程序的水平精度的常量。如果提供者 returns 更细粒度或精确位置,则返回 ACCURACY_FINE,否则如果位置只是近似值,则返回 ACCURACY_COARSE。
1、检查提供商模式(gps、网络、cellar-id)
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();
请注意,您的应用将适用于仅 GPS 模式和高精度模式,因为这两种设置都启用了 GPS。
为了检查 GPS 是否启用,这就可以了。
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!isGpsEnabled) {
//show your alert here
}