我正在编写我的第一个基于位置的Android应用程序,但对一些GPS服务api感到困惑。以下是我的一些问题:
1)为了获取我当前的位置,我在一个活动的onCreate()方法中使用一个监听器调用了requestLocationUpdates()。但是当另一个活动开始并且当前活动变得不可见时会发生什么? GPS位置更新是否会停止?如果是这样,如何在切换活动后继续使用它?
2)Location.getSpeed()的准确度如何?怎么计算?它可以说出自行车和徒步之间的区别吗?
3)不是关于android的问题。如何计算一个位置的坐标,比如距我当前位置100米?
4)要停止GPS,我只需要删除已经注册到位置管理员的所有听众?
非常感谢!
答案 0 :(得分:2)
这不是一个详尽的答案,因为我没有任何Android开发经验,但我只想在GPS问题上添加我的想法:
问题2: 通常在GPS硬件中计算速度,只需将距离的变化除以时间变化。(参见下面的评论)速度通常只要有GPS覆盖,相当准确,你绝对应该能够判断某人是徒步还是骑自行车。您甚至可以在正常步行(6公里/小时)和慢速慢跑(12公里/小时)之间进行判断。
问题3:距离当前位置100米处有无数个位置。只有添加方位,才能导出目标点。公式如下(Source):
lat 2 = asin(sin(lat 1 )* cos(d / R)+ cos(lat 1 )* sin( d / R)* COS(θ))
lon 2 = lon 1 + atan2(sin(θ)* sin(d / R)* cos(lat 1 ),cos(d / R)-sin(LAT <子> 1 子>)* SIN(LAT <子> 2 子>))d / R是角距离(以弧度表示),其中d是行进距离,R是地球半径
您可能需要查看以下Stack Overflow帖子以获取上述的JavaScript实现,我认为这应该不难移植:
答案 1 :(得分:2)
3)不是关于android的问题。如何计算一个位置的坐标,比如距我当前位置100米?
不是您的问题的答案,但它可能对您可能尝试解决的问题有用:http://en.wikipedia.org/wiki/Geohash
答案 2 :(得分:0)
对于那些希望在Android中构建GPS应用程序的人来说,这可能值得一试...... http://code.google.com/p/krvarma-android-samples/source/browse/#svn%2Ftrunk%2FSpeedDemo%253Fstate%253Dclosed