如何以编程方式查找位置打开的模式?

时间:2016-06-10 14:27:41

标签: android gps android-location

我正在开发一个应用程序,其中仅使用GPS提供程序跟踪用户的位置(仅限设备模式的位置)。因此,如果用户使用Wifi和数据将其位置优先级设置为近似位置,则应用程序将无法按预期工作。因此,我需要以编程方式检查用户选择的位置模式(高精度,近似位置或仅设备)并显示相应的对话框。实现这一目标的干净方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用LocationProvider.getAccuracy: https://developer.android.com/reference/android/location/LocationProvider.html

来自文档: int getAccuracy() 返回描述此提供程序的水平精度的常量。如果提供者返回更精细的粒度或确切位置,则返回ACCURACY_FINE,否则如果该位置仅为近似值,则返回ACCURACY_COARSE。

答案 1 :(得分:0)

1,检查提供者模式(gps,network,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();

答案 2 :(得分:0)

请注意,您的应用既适用于GPS模式,也适用于高精度模式,因为两种设置都启用了GPS。

为了检查GPS是否已启用,这将起到作用。

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

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

if (!isGpsEnabled) {
   //show your alert here
}