从GoogleFit API获取空值-心率汇总

问题描述 投票:0回答:1

        long startDateInMS = dateUTCToMillisecs(startDate);
        long endDateInMS = dateUTCToMillisecs(endDate);

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
        dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

        WritableArray results = Arguments.createArray();
        DataSource DS = new DataSource.Builder()
                .setDataType(DataType.TYPE_HEART_RATE_BPM)
                .setType(DataSource.TYPE_DERIVED)
                .setStreamName("heart_rate")
                .setAppPackageName("com.google.android.gms")
                .build();

        final DataReadRequest req = new DataReadRequest.Builder()
                .aggregate(DS, DataType.AGGREGATE_HEART_RATE_SUMMARY)
                .bucketByTime(1, TimeUnit.DAYS)
                .setTimeRange(startDateInMS, endDateInMS, TimeUnit.MILLISECONDS)
                .build();


        GoogleSignInAccount googleSignInAccount = GoogleSignIn.getLastSignedInAccount(context);

        Fitness.getHistoryClient(context, googleSignInAccount).readData(req).addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
            @Override
            public void onSuccess(DataReadResponse dataReadResponse) {

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
            }
        }).addOnCompleteListener(new OnCompleteListener<DataReadResponse>() {
            @Override
            public void onComplete(@NonNull Task<DataReadResponse> task) {

            }
        });

查询已成功执行,但是aggregated_heart_data数组为空,即使我在GoogleFit App中具有心率值也是如此

**我已启用BODY_SENSORS权限和位置权限**

android google-fit heartrate
1个回答
0
投票

看起来您设置的软件包名称不正确。它是数据提供程序包名称。从您的数据请求中删除软件包名称。

您的数据请求源应类似于

DataSource DS = new DataSource.Builder()
            .setDataType(DataType.TYPE_HEART_RATE_BPM)
            .setType(DataSource.TYPE_DERIVED)
            .build();
© www.soinside.com 2019 - 2024. All rights reserved.