我通过GPS定期收到位置更新,问题是第一次位置更新发生的时间 - 它只是很长.当用户在建筑物内时,这个时间甚至更糟.
因此,我正在寻找一些改善启动时间的策略(目前我不使用,getLastKnownLocation但我会).我开始阅读A Deep Dive Into Location以获得一些想法,并且现在有一些想法,我想和你讨论.
首先,上面提到的博客文章会通过设备上的每个位置提供程序进行查询getLastKnownLocation,但只会在它们不旧时并且在允许的准确度内时对它们进行查询.
这是我的第一个问题:我希望基于网络的位置立即可用,所以我会请求一个新的基于网络的位置,然后我会getLastKnownLocation从GPS提供商那里获得,如果最后的GPS位置是在由基于点网络的位置和半径精度然后我将采用GPS位置,无论它多大年纪.你怎么看?
在检查了最后一个已知位置后,我将开始GPS位置跟踪,因为我每2秒只需要它10米,我会使用
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2 * 1000, 10, this);
然而,我发现了一个模式(在幻灯片95和96的演示文稿内部是Epic:Android开发的最佳实践,首先他打开粗略和精细的位置(时间和距离变化为0,0)然后,当第一个事件发生时收到后,他切换到真正需要的更新频率.那么,当间隔设置为0时,第一个gps-update会更快吗?
与此模式相反,我将保持粗略更新,直到收到第一个GPS更新.你怎么看?
希望得到一些有趣的答案!
----------------更新----------------
我做了一些调查:我打开GPS并等待修复.然后我关掉GPS并开了50公里(31英里).然后我使用了A Deep Dive Into Location中的代码来获取所有内容getLastKnownLocation.我尝试了两次,首先关闭GPS,然后打开GPS,但没有修复:
1)关闭GPS我得到
- 提供商:网络,正确位置,准确度680m
- 提供商:被动(mProvider =网络),上述位置相同,同时如上
- 提供者:gps,位置null
所以我了解到当gps关闭时你就得不到了getLastKnownLocation.
2)打开GPS后
- 提供者:网络,正确位置,准确度652m
- 提供者:被动(mProvider =网络),与上面相同的位置,同上时间
- 提供者:gps,位置,因为它是2h之前的准确性12米,时间也早2小时
在这里,我了解到旧消息不会失效,即使它们显然是错误的.
在这种情况下算法运行正常,因为我在关闭GPS时移动了.但是如果我进房子怎么办?在那种情况下,即使它过时,2小时的GPS结果也会非常好.