在Android中设置minTime和MindDistance时,轴承和速度不可用
我有一个问题,当我设置minTime和MindDistance参数时,返回的位置没有速度和方位信息,我在Raspberry PI中使用AndroidThings。我有另一个版本在安卓手机7.0版上运行,它正在按预期工作在Android中设置minTime和MindDistance时,轴承和速度不可用,android,gps,android-things,bearing,Android,Gps,Android Things,Bearing,我有一个问题,当我设置minTime和MindDistance参数时,返回的位置没有速度和方位信息,我在Raspberry PI中使用AndroidThings。我有另一个版本在安卓手机7.0版上运行,它正在按预期工作 mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,300, 3, mLocationListener); 如果我将值更改为0,则其工作正常: mLocationManager.request
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,300, 3, mLocationListener);
如果我将值更改为0,则其工作正常:
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0, mLocationListener);
这很有趣,我可以推测您的手机支持此功能的原因,而您的Pi不支持此功能,但事实证明,此问题在: LocationManager生成的所有位置都保证具有有效的纬度、经度和时间戳。。。所有其他参数都是可选的 好消息是,变通方法随时可用,它们让您可以控制速度/轴承语义(否则可能会由OEM实现
LocationManager
逻辑)
解决方案1
- 保留最后一个补丁
- 对于每个新的补丁,使用
()将其与上一个补丁进行比较。速度同样可以通过A.)距离()和B.)经过的时间来计算,即lastFix.bearingTo(newFix)
newFix.getTime()-lastFix.getTime()
- 将
和minTime
设置为0minDistance
- 保留“第一个”修复
- 在每个新的修复程序出现时更新速度/轴承(显示在UI上或其他任何位置)
- 使用您自己的逻辑来确定从“第一个”修复开始的修复何时超过3m/300ms(使用上述方法),并忽略所有横向/纵向,直到那时。然后,当然,用当前修复替换“第一个”修复,然后重复
我不知道这个较高的更新率是否对您的Pi有任何电源管理影响,但我对此表示怀疑。换句话说,就电池效率而言,它不应该花费你任何东西。这很有趣,我可以推测你的手机支持这一功能的原因,而你的Pi不支持,但事实证明这一问题在: LocationManager生成的所有位置都保证具有有效的纬度、经度和时间戳。。。所有其他参数都是可选的 好消息是,变通方法随时可用,它们让您可以控制速度/轴承语义(否则可能会由OEM实现
LocationManager
逻辑)
解决方案1
- 保留最后一个补丁
- 对于每个新的补丁,使用
()将其与上一个补丁进行比较。速度同样可以通过A.)距离()和B.)经过的时间来计算,即lastFix.bearingTo(newFix)
newFix.getTime()-lastFix.getTime()
- 将
和minTime
设置为0minDistance
- 保留“第一个”修复
- 在每个新的修复程序出现时更新速度/轴承(显示在UI上或其他任何位置)
- 使用您自己的逻辑来确定从“第一个”修复开始的修复何时超过3m/300ms(使用上述方法),并忽略所有横向/纵向,直到那时。然后,当然,用当前修复替换“第一个”修复,然后重复
我不知道这个较高的更新率是否对您的Pi有任何电源管理影响,但我对此表示怀疑。换句话说,就电池效率而言,它不应该花费任何成本。…如果你移动3米,它是否有效?我在室外做了测试,大约500米,…如果你移动3米,它是否有效?我在室外做了测试,大约500米,