如果 GPS 已打开,Android 设置 API 会打开 WiFi 以提高位置准确性

Posted

技术标签:

【中文标题】如果 GPS 已打开,Android 设置 API 会打开 WiFi 以提高位置准确性【英文标题】:Android Settings API turn on WiFi to improve location accuracy if GPS is already turned on 【发布时间】:2015-08-08 07:33:15 【问题描述】:

我已使用新的设置 API 来打开 GPS,而无需离开我的应用程序。 http://android-developers.blogspot.in/2015/03/google-play-services-70-places-everyone.html 我有这个带有 PRIORITY_HIGH_ACCURACY 的 locationRequest 来使用 GPS。

final LocationRequest locationRequest = LocationRequest.create() 
            .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
            .setInterval(DriverApplication.TRACE_MAX_INTERVAL)
            .setMaxWaitTime(DriverApplication.TRACE_MAX_INTERVAL*2)
            .setFastestInterval(DriverApplication.TRACE_FASTEST_INTERVAL);

但 GMS 位置不使用 GPS,它也会显示打开 WiFi 的消息。我已尝试删除忘记所有 WiFi 网络和来自 GMS 的消息已更改并添加来自谷歌的请求以收集匿名位置数据并发送它.. 如果 WiFi 关闭,如何跳过此消息?

来自 LocationRequest 文档:

请求的优先级是对 LocationClient 的强烈提示 要使用的位置来源。例如,PRIORITY_HIGH_ACCURACY 是 更可能使用 GPS,并且 PRIORITY_BALANCED_POWER_ACCURACY 更 可能会使用 WIFI 和手机信号塔定位,但这也取决于 许多其他因素(例如可用的资源)并且是 依赖于实现。

PRIORITY_HIGH_ACCURACY 更可能使用 GPS - 如果启用 GPS,为什么需要发送用户消息来启用 WiFi?这不取决于 GPS 坐标的准确性。每次启用 GPS 时,设置 API 都会显示对话框以启用 WiFi。

【问题讨论】:

【参考方案1】:

请参阅 LocationSettingsStates.isGpsUsable()。

LocationSettingsStates locationSettingsStates = locationSettingsResult.getLocationSettingsStates();
    if (!locationSettingsStates.isGpsPresent() || !locationSettingsStates.isGpsUsable()) 
            Status status = locationSettingsResult.getStatus();
        if (status.getStatusCode() == LocationSettingsStatusCodes.RESOLUTION_REQUIRED) 
            try 
                status.startResolutionForResult(StilActivity.this, REQUEST_CHECK_SETTINGS);
            
            catch (IntentSender.SendIntentException th) 
                Log.e(TAG, "Error opening settings activity.", th);
            
        
    

【讨论】:

我不明白这段代码如何解决“提示打开 WiFi”的问题。我们想要的只是用户同意打开位置而不是 WiFi。 只有在 gps 不可用时才提出解析请求 if(!locationSettingsStates.isGpsUsable()) 这种情况会出现跳过 WiFi 消息【参考方案2】:

PRIORITY_HIGH_ACCURACY 表示您正在尝试从设备 GPS、Wifi 和移动网络获取位置。

【讨论】:

我知道 :) 但我认为如果 WiFi 具有更准确的 GPS 位置,则打开 WiFi(耗尽电池)是愚蠢的.. 那么你应该设置优先级而不是高精度。使用链接查看您可以提供的所有选项。 developer.android.com/reference/com/google/android/gms/location/… 您是否在本文档中看到仅使用 GPS 或 GPS 和移动网络的选项? GMS 可以使用 WiFi 以获得更好的定位精度,但如果用户更愿意关闭 WiFi,则此消息是..

以上是关于如果 GPS 已打开,Android 设置 API 会打开 WiFi 以提高位置准确性的主要内容,如果未能解决你的问题,请参考以下文章

哪个应用正在使用 Android Gps 引擎

奇怪的 LocationListener 通过 GPS 提供程序行为 Android:“updateGps:GPS 已打开,但未接收修复”

Android Geofencing API 在后台可以正常工作,但不能用于 GPS

ReactNative:如何检查用户是不是已授予 gps 权限

React Native:如何检查用户是否已授予gps权限

Android下打开手机GPS设置