如何以编程方式找出打开了哪种位置模式?
Posted
技术标签:
【中文标题】如何以编程方式找出打开了哪种位置模式?【英文标题】:How do I find out programmatically which mode of Location is turned on? 【发布时间】:2016-10-11 13:41:19 【问题描述】:我正在开发一个应用程序,其中仅使用 GPS 提供程序(仅设备模式的位置)跟踪用户的位置。因此,如果用户使用 Wifi 和数据将其位置优先级设置为 Approximate Location,应用程序将无法按预期工作。因此,我需要以编程方式检查用户选择的位置模式(高精度、近似位置或仅限设备)并显示适当的对话框。什么是实现这一目标的干净方法?
【问题讨论】:
在这里看看答案:***.com/questions/30467850/… @DanielNugent 我不想要广播接收器那么重的东西。我觉得凯伦的答案是要走的路。让我检查一下。 那个链接的答案有你需要的代码,但也有很多其他的东西。我刚刚在这里发布了一个答案,其中只有您需要的代码...... 【参考方案1】:你可以 LocationProvider.getAccuracy: https://developer.android.com/reference/android/location/LocationProvider.html
来自文档: int getAccuracy () 返回描述此提供程序的水平精度的常量。如果提供者返回更细粒度或精确位置,则返回 ACCURACY_FINE,否则如果位置只是近似值,则返回 ACCURACY_COARSE。
【讨论】:
谢谢让我看看!【参考方案2】:1、查看provider模式(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();
【讨论】:
【参考方案3】:请注意,您的应用可以在仅 GPS 模式和高精度模式下运行,因为这两种设置都启用了 GPS。
为了检查 GPS 是否已启用,这可以解决问题。
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!isGpsEnabled)
//show your alert here
【讨论】:
以上是关于如何以编程方式找出打开了哪种位置模式?的主要内容,如果未能解决你的问题,请参考以下文章