【问题标题】:Android Settings API turn on WiFi to improve location accuracy if GPS is already turned on如果 GPS 已打开,Android 设置 API 会打开 WiFi 以提高位置准确性
【发布时间】: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。

【问题讨论】:

    标签: android gps 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,则此消息是..
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    相关资源
    最近更新 更多