Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中设置minTime和MindDistance时,轴承和速度不可用_Android_Gps_Android Things_Bearing - Fatal编程技术网

在Android中设置minTime和MindDistance时,轴承和速度不可用

在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

我有一个问题,当我设置minTime和MindDistance参数时,返回的位置没有速度和方位信息,我在Raspberry PI中使用AndroidThings。我有另一个版本在安卓手机7.0版上运行,它正在按预期工作

mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,300, 3, mLocationListener);
如果我将值更改为0,则其工作正常:

mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0, mLocationListener);

这很有趣,我可以推测您的手机支持此功能的原因,而您的Pi不支持此功能,但事实证明,此问题在:

LocationManager生成的所有位置都保证具有有效的纬度、经度和时间戳。。。所有其他参数都是可选的

好消息是,变通方法随时可用,它们让您可以控制速度/轴承语义(否则可能会由OEM实现
LocationManager
逻辑)

解决方案1

  • 保留最后一个补丁
  • 对于每个新的补丁,使用
    lastFix.bearingTo(newFix)
    ()将其与上一个补丁进行比较。速度同样可以通过A.)距离()和B.)经过的时间来计算,即
    newFix.getTime()-lastFix.getTime()
通过此解决方法,每个轴承都定义为从上一个修复到当前修复的轴承,并且在新修复一出现时就可以使用

解决方案2

  • minTime
    minDistance
    设置为0
  • 保留“第一个”修复
  • 在每个新的修复程序出现时更新速度/轴承(显示在UI上或其他任何位置)
  • 使用您自己的逻辑来确定从“第一个”修复开始的修复何时超过3m/300ms(使用上述方法),并忽略所有横向/纵向,直到那时。然后,当然,用当前修复替换“第一个”修复,然后重复
在这种解决方法中,任何给定时刻的轴承和速度都不对应于下一个“正式”修复(但如果在每个单独的“迷你修复”上正确集成,它们可以)


我不知道这个较高的更新率是否对您的Pi有任何电源管理影响,但我对此表示怀疑。换句话说,就电池效率而言,它不应该花费你任何东西。

这很有趣,我可以推测你的手机支持这一功能的原因,而你的Pi不支持,但事实证明这一问题在:

LocationManager生成的所有位置都保证具有有效的纬度、经度和时间戳。。。所有其他参数都是可选的

好消息是,变通方法随时可用,它们让您可以控制速度/轴承语义(否则可能会由OEM实现
LocationManager
逻辑)

解决方案1

  • 保留最后一个补丁
  • 对于每个新的补丁,使用
    lastFix.bearingTo(newFix)
    ()将其与上一个补丁进行比较。速度同样可以通过A.)距离()和B.)经过的时间来计算,即
    newFix.getTime()-lastFix.getTime()
通过此解决方法,每个轴承都定义为从上一个修复到当前修复的轴承,并且在新修复一出现时就可以使用

解决方案2

  • minTime
    minDistance
    设置为0
  • 保留“第一个”修复
  • 在每个新的修复程序出现时更新速度/轴承(显示在UI上或其他任何位置)
  • 使用您自己的逻辑来确定从“第一个”修复开始的修复何时超过3m/300ms(使用上述方法),并忽略所有横向/纵向,直到那时。然后,当然,用当前修复替换“第一个”修复,然后重复
在这种解决方法中,任何给定时刻的轴承和速度都不对应于下一个“正式”修复(但如果在每个单独的“迷你修复”上正确集成,它们可以)


我不知道这个较高的更新率是否对您的Pi有任何电源管理影响,但我对此表示怀疑。换句话说,就电池效率而言,它不应该花费任何成本。

…如果你移动3米,它是否有效?我在室外做了测试,大约500米,…如果你移动3米,它是否有效?我在室外做了测试,大约500米,