【问题标题】:Location detection on KitKatKitKat 上的位置检测
【发布时间】:2014-11-01 09:45:11
【问题描述】:

到目前为止,当使用 LocationClient 来获取用户的最后一个已知位置时,我没有遇到任何问题,例如在 Jelly Bean 上进行测试。

我有一个 KitKat 手机进行测试,我发现 Settings -> Location 中有一个 DEFAULT 设置,称为“仅限设备”,它完全依赖 GPS 来启动、连接和获取位置。这需要一段时间。另外,当我在室内时,它可能找不到任何位置。

如果我转到“设置”并切换到“高精度”,我会返回我的应用,BAM 位置就在那里。

问题是:

如何检测 KitKat 上设置了这三个位置设置中的哪一个并要求用户更改(或直接自己更改)

三个设置分别是:

-仅限设备

-省电模式

-高精度

【问题讨论】:

    标签: android location


    【解决方案1】:

    据我所知,您可以使用LocationManager 类单独确定启用/禁用哪些服务。

    locationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
    isGPSEnabled = locationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);
    isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    

    因此,您所要做的就是确定其中哪些已启用,并采取相应措施。如果其中任何一个被禁用,您可以要求用户打开它们。

    if(!isGPSEnabled) {
        startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
    }
    if(!isNetworkEnabled) {
        startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
    }
    

    编辑: 您可以使用LocationManager 类来正确设置您的设置,然后使用LocationClient 来实际收集位置信息。

    【讨论】:

    • 在阅读了大量关于它是旧的位置 API 以及 LocationClient 如何变得更好和新的方式的文章后,几周前我刚刚停止使用 LocationManager 类。确实,在转换之后,很多问题都消失了。我不想回去使用它。
    • 是这样吗?我不知道。官方页面中肯定没有提到:developer.android.com/reference/android/location/… :)
    • 看看这个讨论。看起来两者各有利弊......stackoverflow.com/questions/18916273/…也许我使用它们的组合?
    • 没错。您可以使用LocationManager 来确保您的设置正确。无论哪种方式,让我们看看其他人是否想出了更好的东西!
    • 但是这个 .isProviderEnabled(LocationManager.GPS_PROVIDER);将为仅设备和高精度返回 true。我需要确切知道正在使用哪一个。
    猜你喜欢
    • 2013-06-25
    • 2013-03-23
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多