首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >com.google.step_count.cumulative需要android.permission.ACTIVITY_RECOGNITION

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

Stack Overflow用户
提问于 2019-12-05 14:13:43
回答 1查看 492关注 0票数 0

我正在尝试从android的google-fit API中检索BPM。但是获取错误代码还需要清单文件代码中的android.permission.ACTIVITY_RECOGNITION included权限:

代码语言:javascript
复制
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());
}
EN

回答 1

Stack Overflow用户

发布于 2020-01-12 09:01:56

Android10引入了android.permission.ACTIVITY_RECOGNITION运行时权限,用于需要检测用户步数或对用户的身体活动进行分类的应用程序,例如步行、骑自行车或在车辆中移动。这是为了让用户了解如何在设置中使用设备传感器数据。

在Manifest.xml中添加权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />

请求运行时权限:

代码语言:javascript
复制
//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);
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59189266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档