getSpeed()实际上在Android内部做了什么?

时间:2014-05-12 20:03:08

标签: android location

我正在编写一个使用onLocationChanged(Location location)回调和location.getSpeed()的应用来获取用户旅行的速度。我很好奇调用getSpeed()时实际发生了什么。我注意到location只是一个参与Android回调的参数,这让我想知道:

getSpeed()只是从此对象中提取已经计算过的字段,还是调用getSpeed()以其他方式计算该值?

2 个答案:

答案 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)。

祝你好运!