【问题标题】:Android location updatesAndroid 位置更新
【发布时间】:2013-03-12 11:39:17
【问题描述】:

我正在尝试制作一个基于准确位置的应用程序,但我对 的工作原理有点困惑。

  1. 如果我将requestlocationUpdates(LocationManager.GPS_PROVIDER, , ); 作为位置提供程序并测试我的应用程序。我看到,如果我没有启用 gps,它会从网络获取更新,并且当它启用时,它会从 gps 获取更新。如果网络和 gps 提供商自行切换,设置它们发送更新有什么意义?

  2. requestlocationUpdates的第三个参数是如何工作的?我的意思是它说它会改变我设置的距离,但是它如何检测到我已经移动了?

【问题讨论】:

    标签: requestlocationupdates android gps location android-wifi locationmanager


    【解决方案1】:

    你可以试试下面的代码

    Criteria criteria = new Criteria();
    String provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);
    

    其中 Criteria 是一个类,指示用于选择位置提供程序的应用程序标准。供应商可能会根据准确性、功率使用、报告高度、速度和方位的能力以及货币成本进行排序。

    然后

    locationManager.requestLocationUpdates(provider,0, 0, new MyLocationListener());
    

    第二个和第三个参数用于控制监听器接收更新的频率,第二个和第三个参数是通知之间的最小时间间隔,第三个是通知之间距离的最小变化通知 — 将两者都设置为零,尽可能频繁地请求位置通知。

    【讨论】:

    • 感谢您的回复,但我的问题是您写给我的代码我把它放在 onResume 方法中,所以如果我的标准的最佳提供者是 gps 但它不可用应用程序将如何自行选择网络提供商,并在 gps 可用时更改。我必须自己检查吗?至于第二个问题,我的问题是它如何检测到我移动的距离超过了我的 mindistance 参数?这意味着它计算了所有的米数?
    • 根据您的第一个问题 locationManager.getBestProvider 将为您提供最佳提供商,即 gps 或网络。你不必做任何事情。
    • 是的,但是如果我系统选择了gps,例如它变得不可用,它会自行更改为网络吗?
    • ya..但是如果你使用 locationManager.getBestProvider
    【解决方案2】:
    1. 请记住,一旦您 requestLocationUpdates(...) 意味着 onLocationChanged(...) 将在启用指定提供程序时触发,您将在 onLocationChanged 方法中获得最新坐标。在检测到任何新位置之前,系统将使用默认位置,即缓存位置或 LastKnownLocation。

    2. 当然,当您的当前位置与之前的位置(缓存位置)不同时,系统会认为您正在移动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 2016-07-19
      • 2014-06-03
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多