是否可以在一段时间内找到用户传播的距离



我试图了解是否有任何方法可以检索有关用户在一天/周或特定日期之间的旅行距离的集中信息。我知道该操作系统(如果允许)收集有关用户位置的信息,因此我想可以有一种方法可以在一段时间内检索他的旅行数量。

注意:我正在尝试获得总数/公里的总数,而不是用户去过的位置或他旅行的时间。

注2:我要知道是否可以通过OS收集整体地理位置服务使用情况,而无需对用户位置进行应用程序进行轮询。

谢谢大家!

我认为这会对您有所帮助。Google Fit API:请求

之类的fitnessoptions
    FitnessOptions fitnessOptions = FitnessOptions.builder()
            .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
            .addDataType(DataType.TYPE_DISTANCE_DELTA, FitnessOptions.ACCESS_READ)
            .build();

您需要请求GoogleSignIn.requestPermissions

并在许可后提出请求

    DataReadRequest readRequest = new DataReadRequest.Builder()
            .read(DataType.TYPE_DISTANCE_DELTA)
            .bucketByTime(8, TimeUnit.DAYS)
            .enableServerQueries()
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .build();

并致电

Fitness.getHistoryClient(
                this,
                GoogleSignIn.getLastSignedInAccount(this))
                .readData(readRequest)
                .addOnSuccessListener(new OnSuccessListener<DataReadResponse>() { ...

告诉我它是否会成功,我没有时间检查此当前选项,但在我的情况下,DataType.TYPE_HEART_RATE_BPM运行良好。

是的,您可以根据您的需求而成为问题(也可能不是)。您需要做的就是在FusedLocationProviderClient类实例的帮助下接收位置更新。

Google在接收位置更新文档中有很多有关它的信息。现在,关键是,一旦您开始在位置回调中接收位置...

locationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
        if (locationResult == null) {
            return;
        }
        for (Location location : locationResult.getLocations()) {
            // Update UI with location data
            // ...
        }
    };
};

您可以使用Location.distanceTo(Location otherLocation)方法来计算两个位置之间的距离...

currentLocation.distanceTo(previousLocation);

或者,您可以使用Location.distanceBetween()方法来计算两个地理点(LAT,LNG)之间的距离。

我确实在开始时提到了准确性,因为Location距离计算基于WGS87椭球,该椭圆形不考虑高程。您可以更好地阅读和解析设备传感器数据,例如陀螺仪和加速度计

最新更新