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:如何在用户移动时获得精确的速度和行进距离?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中将列和行项居中?

如何使用 YouTube iframe 获得更精确的当前、视频和开始时间?

Flutter 中的持久代码

如何获取Android设备用户移动的速度? Location.getSpeed 可靠吗?

以编程方式更改Mac光标速度

无法在 svg 中获得鼠标指针的精确 xy 坐标(在路径标记上)