【问题标题】:Android. How to know if location detected is from GPS or Network provider安卓。如何知道检测到的位置是来自 GPS 还是网络提供商
【发布时间】:2013-02-25 15:30:30
【问题描述】:

我正在尝试实现一个应用程序,它可以从 GPS 和网络提供商处感知位置并将其显示在 Google 地图上。我成功地做到了,但我有一个问题: 我在 Activity 的 onCreate() 中获取了提供者(它扩展了 LocationListener)

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
location = locationManager.getLastKnownLocation(provider);

它工作正常,我的问题是当调用 onLocationChange() 时,如果调用它的提供者是 GPS 或 NETWORK,我应该采取不同的行动。有没有办法知道哪个? 为了更清楚:

onLocationChanged(Location location) 被调用时,是否有机会知道是哪个提供商发起了调用?我曾尝试在提供程序字符串上使用if,但它似乎不起作用。

【问题讨论】:

    标签: android gps position location-provider


    【解决方案1】:

    您需要了解位置提供商(GPS、WIFI 或网络)或其准确性吗?

    getAccuracy()

    获取此位置的估计精度,以米为单位。

    我们将准确度定义为 68% 置信度的半径。换句话说,如果你以这个位置的经纬度为中心画一个圆,半径等于精度,那么有 68% 的概率是真正的位置在这个圆内。

    如果你真的关心提供者,你可能会使用isProviderEnabled()

    【讨论】:

    • 谢谢。我见过isProviderEnabled(),我的问题是它们都被启用了!如果是 GPS 或 NETWORK,我应该知道哪个提供商设置了位置以便做不同的事情。
    • 你应该可以在这里看到详细的答案:stackoverflow.com/questions/2021176/…
    【解决方案2】:

    检查精度是否为

    boolean isGPS = (location.getAccuracy() <= 30);
    

    【讨论】:

    • 谢谢。我发现有一种方法( location.getProvider() )似乎可以做我想做的事......我会告诉你的!
    【解决方案3】:

    我想你想知道上次位置更新是由哪个提供商提供的.....

    您已将 Provider 创建为字符串,只需在代码中使用该字符串即可 if (provider.matches("GPS")){}

    【讨论】:

      【解决方案4】:

      我看到了几个答案,虽然它们可能有用,但没有一个能解决所提出的实际问题:

      当 onLocationChanged(Location location) 被调用时,是否有机会知道是哪个提供者调用的?

      要知道是GPS_PROVIDER 还是NETWORK_PROVIDER 触发了onLocationChanged,您可以使用getProvider() 方法(或Kotlin 中的provider 值):

      @Override
      public void onLocationChanged(Location location){
          //obtain a string, 'gps' or 'network', from the location
          System.out.println(location.getProvider());
      }
      

      或者在 Kotlin 中:

      override fun onLocationChanged(location: Location?) {
          println(location!!.provider)     
      }
      

      文档参考here

      【讨论】:

        猜你喜欢
        • 2013-12-19
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        • 1970-01-01
        相关资源
        最近更新 更多