我正在编写一个使用onLocationChanged(Location location)
回调和location.getSpeed()
的应用来获取用户旅行的速度。我很好奇调用getSpeed()
时实际发生了什么。我注意到location
只是一个参与Android回调的参数,这让我想知道:
是getSpeed()
只是从此对象中提取已经计算过的字段,还是调用getSpeed()
以其他方式计算该值?
答案 0 :(得分:2)
我很多时候也很好奇源代码中的内容或者它是如何被调用的。我试图找到android.Location类的代码,似乎我成功了。 尝试查看此页面:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/location/java/android/location/Location.java 方法' getSpeed'在行号627,但它只告诉'返回mSpeed;',所以你必须查看该类的其他部分
答案 1 :(得分:0)
Android的getSpeed()只会返回setSpeed()中设置的值。
获得速度的最佳方法是使用简单的物理学:
速度=距离/时间
关于GPS'是因为存在很多可变性,因此在速度方面,准确性并不总是最好的。您应该使用过滤器来帮助平滑数据(卡尔曼滤波器非常适合navigation data)。
祝你好运!