融合位置提供程序和“Wi-Fi 和移动网络位置”设置

Posted

技术标签:

【中文标题】融合位置提供程序和“Wi-Fi 和移动网络位置”设置【英文标题】:Fused location provider and the "Wi-Fi & mobile network location" setting 【发布时间】:2014-01-07 18:33:08 【问题描述】:

我正在使用融合位置提供程序。我希望此提供商能够访问所有可能的来源以获得最佳准确性。

我的设备(搭载 android 4.3 的 Moto G)具有“Wi-Fi 和移动网络位置”设置:

默认情况下,此设置是禁用的,如上面的屏幕截图所示。

    此设置的值是否会影响融合位置提供者给出的位置的准确性?

    如果是这样,那么如何确保启用此设置?或者至少知道它被禁用了?

【问题讨论】:

【参考方案1】:

    是的,“Wi-Fi 和移动网络位置”会影响位置的准确性,在某些位置...如果禁用此功能,有时您可能难以定位,因为 GPS 无法定位您在某些地方(例如在有很多建筑物的城市中)。因此,“Wi-Fi 和移动网络位置”会有所帮助。

    您无法确保此设置已启用,但您可以通过代码知道。

查看此代码以检查“网络”位置是否可用:

What is the simplest and most robust way to get the user's current location on Android?

编辑:

try    
    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    networkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
 catch (Exception ex) 
    // catch Exception

回答你的cmets:

GPS 提供程序用于 Fuse Location Provider。 LocationRequest 的文档说: “应用程序无法指定 LocationClient 使用的确切位置源,例如 GPS。”它是同一个 GPS 提供商,但在这种情况下不由您处理。

关于网络提供商,我在LocationClient 文档中找到了这一点(对于addGeofences 方法:

“如果网络位置提供程序被用户禁用,地理围栏服务将停止更新,所有注册的地理围栏将被删除,并由提供的待处理意图生成意图。”

我的猜测是,如果 Geofence 服务在用户禁用的情况下无法访问此提供程序,LocationClient 也不会。

【讨论】:

请提供2的例子。 关于你的链接,android.location.LocationManager.GPS_PROVIDER等是否参与了融合的位置提供者(com.google.android.gms.location)?

以上是关于融合位置提供程序和“Wi-Fi 和移动网络位置”设置的主要内容,如果未能解决你的问题,请参考以下文章

使用融合位置提供程序获取用户当前位置

Android 融合位置提供程序设置

融合位置提供程序 - 通过位移更新位置不起作用

是否可以使用 Google 的新融合位置提供程序模拟位置?

Android 中的融合位置提供程序

融合的位置提供程序 setsmallestDisplacement 在 Android 中不起作用