Java 位置服务计算

Java 位置服务计算,java,android,geolocation,Java,Android,Geolocation,我创建了一个应用程序,每1分钟发送一次手机位置(使用GPS卫星)到我的mysql数据库 一个位置有时可能会给出不同的结果,例如st.x#5或st.x#2-8。 这对我来说是个问题,因为如果我在同一个地方呆上12个小时(睡觉时),我的数据库中就会充斥着几乎相同的位置 我的问题是如何避免这种情况,在整个12小时内,我将得到一个单一的位置,如果可能的话,是最准确的(不太重要的)。。也许有一个选项可以检查手机是否在移动?如果不停止跟踪?正如Android开发者所建议的那样 通过在requestLocat

我创建了一个应用程序,每1分钟发送一次手机位置(使用GPS卫星)到我的mysql数据库

一个位置有时可能会给出不同的结果,例如st.x#5或st.x#2-8。 这对我来说是个问题,因为如果我在同一个地方呆上12个小时(睡觉时),我的数据库中就会充斥着几乎相同的位置


我的问题是如何避免这种情况,在整个12小时内,我将得到一个单一的位置,如果可能的话,是最准确的(不太重要的)。。也许有一个选项可以检查手机是否在移动?如果不停止跟踪?

正如Android开发者所建议的那样

通过在
requestLocationUpdate()
方法中使用最小距离

要确定最小距离,可以评估最后一个位置的精度,并将阈值设置为精度的1.5倍

此外,您还可以根据需要位置更新的频率设置
minTime
。还有一个带代码的教程

您可以确定当前位置是否优于新位置,并且
然后将其发送到服务器。

我将从数据库的角度回答您的问题

仅当自上次间隔后数据库发生任何更改时,才应插入数据库

例如,在睡觉前一天晚上,您向数据库发送x1,y1,时间戳为t1。您将继续从t2、t3、t4向数据库发送x1、y1。您可以从数据库中丢弃它。一旦开始移动,将在t1000处插入x2、y2

在数据库中,t1和t1000只有两条记录


如果你想知道t10的位置,那么你应该只从t1得到结果。

如果(currentScience.equals(previousScience))不做任何事有什么问题;else sendLocation()正如Android开发者所建议的,如果你的位置没有改变,就不要把它加载到服务器上。你会得到GPS位置的变化,你必须对此进行补偿(gabe建议的MindDistance方法是一个很好的解决方案)。有关更多信息,请参阅。嘿,gabe,很抱歉进行编辑,只是为了修复显示不太好的链接。谢谢你,但有件事我不明白,我向requestLocationUpdate发送了一个30米的参数,当我的手机不动时,我会不断获取位置。。为什么呢?可能是gps不太准确,室内肯定是个问题。您使用的是什么位置提供商?网络还是全球定位系统?看不到代码就很难帮上忙。代码是线条的基调,所以我会总结说GPS:)我不使用网络Provider,因为它给出的位置非常不准确,但有时(大部分在室内)GPS无法生成位置,所以我正在考虑添加网络Provider。。是的,它是在室内测试的。