我使用Samsung S Health SDK开发了我的应用程序.我想在我的应用程序中添加S Health的步行,跑步和骑行跟踪.
如何添加这些功能?
我在readTodayWalkingDistance()中添加了以下属性:
private void readTodayWalkingDistance() { HealthDataResolver resolver = new HealthDataResolver(mStore, null); // Set time range from start time of today to the current time long startTime = getStartTimeOfToday(); long endTime = System.currentTimeMillis(); Filter filter = Filter.and(Filter.greaterThanEquals(HealthConstants.Exercise.START_TIME, startTime), Filter.lessThanEquals(HealthConstants.Exercise.START_TIME, endTime)); HealthDataResolver.ReadRequest request = new ReadRequest.Builder() .setDataType(HealthConstants.Exercise.HEALTH_DATA_TYPE) .setProperties(new String[]{ HealthConstants.Exercise.EXERCISE_TYPE, HealthConstants.Exercise.DURATION, HealthConstants.Exercise.MAX_SPEED, HealthConstants.Exercise.MEAN_SPEED, }) .setFilter(filter) .build(); try { resolver.read(request).setResultListener(mListener); } catch (Exception e) { Log.e(MainActivity.APP_TAG, e.getClass().getName() + " - " + e.getMessage()); } }
然后更新了ResultListener:
private final HealthResultHolder.ResultListenermListener = new HealthResultHolder.ResultListener () { @Override public void onResult(ReadResult result) { int exercise_type = 0; long duration = 0; float max_speed = 0.0f, mean_speed = 0.0f; Cursor c = null; try { c = result.getResultCursor(); if (c != null) { while (c.moveToNext()) { exercise_type += c.getInt(c.getColumnIndex(HealthConstants.Exercise.EXERCISE_TYPE)); duration += c.getLong(c.getColumnIndex(HealthConstants.Exercise.DURATION)); max_speed += c.getColumnIndex(HealthConstants.Exercise.MAX_SPEED); mean_speed += c.getColumnIndex(HealthConstants.Exercise.MEAN_SPEED); } } } finally { if (c != null) { c.close(); } } MainActivity.getInstance().getData(exercise_type, duration, max_speed, mean_speed); } };
在HashSet MainActivity中添加了以下权限:
mKeySet.add(new PermissionKey(HealthConstants.Exercise.HEALTH_DATA_TYPE, PermissionType.READ));
并在AndroidManifest文件中: