com.google.step_count.cumulative需要android.permission.ACTIVITY_RECOGNITION

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

我正在尝试从android中的Google-fit API检索BPM。但出现com.google.step_count.cumulative错误需要android.permission.ACTIVITY_RECOGNITION清单文件中也包含了权限代码:

private void readDataFitnessHistory() {
    Calendar cal = Calendar.getInstance();
    Date now = new Date();
    cal.setTime(now);
    long endTime = cal.getTimeInMillis();

    cal.add(Calendar.WEEK_OF_YEAR, -1);
    long startTime = cal.getTimeInMillis();

    java.text.DateFormat dateFormat = getDateInstance();
    Log.d("Range Start", "Range Start: " + dateFormat.format(startTime));
    Log.d("Range End", "Range End: " + dateFormat.format(endTime));

    DataReadRequest readRequest = new DataReadRequest.Builder()
            .aggregate(DataType.TYPE_HEART_RATE_BPM, DataType.AGGREGATE_HEART_RATE_SUMMARY)
            .bucketByTime(1, TimeUnit.DAYS)
            .enableServerQueries()
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .build();


    DataReadResult dataReadResult = Fitness.HistoryApi.readData(mGoogleApiClient, readRequest).await(0, TimeUnit.MINUTES);
    DataSet dataSet = dataReadResult.getDataSet(DataType.TYPE_HEART_RATE_BPM);
    showDataSet(dataSet);
    displayBpmDataForToday();
}
private void showDataSet(DataSet dataSet) {
    Log.e("History", "Data returned for Data type: " + dataSet.getDataType().getName());
    DateFormat dateFormat = getDateInstance();
    DateFormat timeFormat = DateFormat.getTimeInstance();

    for (DataPoint dp : dataSet.getDataPoints()) {
        Log.e("History", "Data point:");
        Log.e("History", "\tType: " + dp.getDataType().getName());
        Log.e("History", "\tStart: " + dateFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS)) + " " + timeFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS)));
        Log.e("History", "\tEnd: " + dateFormat.format(dp.getEndTime(TimeUnit.MILLISECONDS)) + " " + timeFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS)));
        for(Field field : dp.getDataType().getFields()) {
            Log.e("History", "\tField: " + field.getName() + " Value: " + dp.getValue(field));
        }
    }
}
private void displayBpmDataForToday() {
    DailyTotalResult result = Fitness.HistoryApi.readDailyTotal( mGoogleApiClient, DataType.TYPE_HEART_RATE_BPM ).await(0, TimeUnit.MINUTES);
    showDataSet(result.getTotal());
}
java android google-fit
1个回答
0
投票
android.permission.ACTIVITY_RECOGNITION运行时权限,用于需要检测用户的步数或对用户的身体活动(例如步行,骑自行车或在车辆中移动)进行分类的应用。旨在使用户了解设置中如何使用设备传感器数据。

在Manifest.xml中添加权限

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />

要求运行时权限:

//Run time Permissions
    String[] PERMISSIONS = {
                    Manifest.permission.ACTIVITY_RECOGNITION
            };

     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACTIVITY_RECOGNITION)
                        != PackageManager.PERMISSION_GRANTED) {

                    ActivityCompat.requestPermissions(this,
                            PERMISSIONS,
                            PERMISSIONS_REQUEST_ACTIVITY_RECOGNITION);
                }
© www.soinside.com 2019 - 2024. All rights reserved.