Flutter:如何在用户移动时获得精确的速度和行进距离?
Posted
技术标签:
【中文标题】Flutter:如何在用户移动时获得精确的速度和行进距离?【英文标题】:Flutter: How to get precise speed and traveled distance as the user moves? 【发布时间】:2021-02-21 14:57:22 【问题描述】:我正在尝试构建一种健身应用程序。我想知道用户的速度,也想显示用户行进的距离。我已经知道如何使用 Geolocator 包获取它,但数据不够精确,事实上,即使用户不移动(并且行进距离增加),我也会收到位置更新。我想知道是否有更好的解决方案。其他健身应用如何做到如此精准?
【问题讨论】:
【参考方案1】:Huawei Location Kit 可能会帮助您解决问题。
Location Kit 将全球导航卫星系统 (GNSS)、Wi-Fi 和基站定位功能结合到您的应用中,以构建全球定位功能,让您能够为全球用户提供灵活的基于位置的服务。目前,它提供了三种主要能力:融合定位、活动识别和地理围栏。您可以根据需要调用其中一项或多项功能。
详情请参考Docs。
华为也为 Flutter 提供了一些 HMS Core 套件插件:
Reference documents
Location Kit plugins for Flutter
【讨论】:
非常感谢。我不知道那个包,它完全符合我的需要。【参考方案2】:我正在使用 Geolocator for Flutter 构建类似的东西。
我不知道您是否使用Geolocator.getPositionStream
,我使用,您可以在其中设置过滤器以消除运动中的噪音。
(https://pub.dev/documentation/geolocator/latest/geolocator/Geolocator/getPositionStream.html)
我通过速度计算距离,每秒米数,并通过设置为 1 秒的intervalDuration
每秒获取该值。
在 ios 上运行良好,但昨天才发现它在 android 上根本不行。所以我在这里寻找解决方案。
你对这个话题有什么看法?
double trip = 0.0;
positionStream = Geolocator.getPositionStream(
intervalDuration: Duration(seconds: 1),
desiredAccuracy: LocationAccuracy.high
)
.listen((pos)
if (pos != null)
// calculate distance from speed
trip += pos.speed;
【讨论】:
这看起来像是一个问题而不是答案。 更像是一次健康的讨论和分享想法以上是关于Flutter:如何在用户移动时获得精确的速度和行进距离?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 YouTube iframe 获得更精确的当前、视频和开始时间?