Android位置更新

时间:2013-03-12 11:39:18

标签: android gps location android-wifi locationmanager

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

  1. 如果我将requestlocationUpdates(LocationManager.GPS_PROVIDER, , );作为位置提供商,我会测试我的应用。我看到如果我没有启用gps,它会从网络获取更新,当它启用时,它会从gps中获取。设置网络和gps提供商如果他们自己打开更新,有什么意义呢?

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

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码

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

其中Criteria是指示选择位置提供者的应用程序标准的类。提供商可以根据准确性,用电量,报告高度,速度和方位的能力以及货币成本进行订购。

然后

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

使用第二个和第三个参数,以便您可以控制侦听器使用第二个和第三个参数接收更新的频率 - 第二个是通知之间的最小时间间隔,第三个是距离之间的最小距离变化通知 - 设置为零,尽可能频繁地请求位置通知。

答案 1 :(得分:0)

  1. 请记住,一旦你requestLocationUpdates(...)意味着onLocationChanged(...)将在启用提供程序时触发,你将获得onLocationChanged方法中的最新坐标。在检测到任何新位置之前,系统将使用默认位置,即Cache位置或LastKnownLocation。

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