我正在尝试从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());
}
在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);
}