当前位置: 首页 > 知识库问答 >
问题:

如何使用GPS精确计算速度和距离?跟踪用户位置。跑步应用程序

柴琨
2023-03-14

我想做一个跑步应用程序,跟踪用户的位置、速度和跑步距离。目前,我正在使用谷歌定位服务API获取GPS数据,因为谷歌在官方网站上推荐它。

但问题是,我只能每10秒更新一次位置,如果只是在地图上绘制位置,这是可以的,但我想计算用户当前速度(公里/小时)、当前速度(分钟/米),并计算他跑一圈(1公里或1英里)的确切时间。问题是,如果我每10秒收到一次更新,我无法准确计算这些参数。例如,更新是在用户996m时进行的,4m他会跑一圈。但是下一次更新将在10秒内不可用,所以它会在例如1010m时出现。这不是用户想要的...

如何解决这个问题?你怎么认为?

我在这里使用确切的代码形式。

位置请求如下所示:

LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

来自文档:

priority\u HIGH\u ACCURACY的优先级,加上您在应用程序清单中定义的ACCESS\u FINE\u LOCATION权限设置,以及5000毫秒(5秒)的快速更新间隔,使融合的位置提供程序返回精确到几英尺以内的位置更新。这种方法适用于映射实时显示位置的应用程序

但这还不够。尽管我把时间间隔改小了,但它总是10秒。

共有1个答案

莫飞翮
2023-03-14

使用此代码,它可以每3秒钟发送一次位置更新。

LocationListener listener = new LocationListener() {
        @Override
        public void onLocationChanged(final Location location) {
            //This will be called when location is changed


        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

            Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(i);

        }
    };

    locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

    }
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, listener);

Github上此代码的更多详细信息。

 类似资料:
  • 所以我让全球定位系统从我“按下播放”开始持续跟踪和记录我的位置。我想显示所行驶的距离、平均速度、所花费时间的上升和下降。 我正在用我的“LocationsService.java”类记录我的位置,这个类使用startLocationService(),它通过LocationCallback循环(我想)。我使用从@TDIScott获得的代码创建了一个hashmap,并将其放入列表中。 更新问题:如何

  • 问题内容: 我的桌子有经度和纬度 所以我想要的是我要从页面传递两个经度和纬度。如何使用存储过程查找最近的地方?我没有太多帮助,所以我必须在这里询问 尝试过使用这个 但是我必须将其与表值进行匹配,所以我该如何实现呢? 问题答案: 您可以在SQL中使用与上面显示的查询类似的查询,其中和是要搜索的变量值。该和是从你的表的列名。顺便说一句,这称为Haversine公式,该常数用于获取以KM为单位的距离,而

  • 我正在Xamarin中实现一个android应用程序。Android平台,该应用程序用于跟踪他旅行的距离和路线。通过使用低版本和高版本的android OS的后台定位服务和前台定位服务。 当用户关闭应用程序时,我的前台服务停止,无法跟踪距离和路线,我在更高版本的Android设备(8.0操作系统版本以上)中面临这个问题。它给了我只有起点和终点的距离与Arial路线。 请给我任何其他方法来解决我的问

  • 我正在为中国开发一个需要GPS位置跟踪的android应用程序。对于位置跟踪,android需要访问Google play服务。但Google play服务在中国被屏蔽。 这个问题有解决办法吗?有没有推荐的第三方库或实现? 谢谢

  • 问题内容: 如果对http请求的响应是带有cookie的重定向(http代码302), 您如何指示Go客户使用收到的Cookie跟踪新位置? 在CURL中,可以通过以下方式轻松设置客户端: 您如何在Go中做到这一点? 问题答案: 使用Go 1.1,您可以使用。 这是一个工作示例:

  • 问题内容: 继一些在线调查(1,2,numpy的,SciPy的,scikit,数学),我已经找到了计算的几种方法 在Python欧氏距离 : 我想知道是否有人可以就 效率* 和 精度 方面认为上述哪一项( 或我未找到的其他任何 理由)提供最佳见解。如果有人知道任何的 资源(S) ,其中讨论的主题,这也将是巨大的。 *** __ 的 背景下 ,我在有趣的是,在计算对数元组之间的欧氏距离,例如之间的距