从 Google Fit 获取第三方应用程序(Sleep as Android)数据
Get third party application (Sleep as Android) data from Google Fit
我目前正在尝试从 Google 中获取 Sleep as Android 数据以适合我自己的 android 应用程序。我从 post 中读到 Android 睡眠数据存储在 Google Fit 中,任何第 3 方应用程序都可以查看它们。为此,我使用历史会话。这是读取睡眠数据的示例代码:
public static DataReadRequest queryFitnessData() {
// [START build_read_data_request]
// Setting a start and end date using a range of 1 week before this moment.
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.i(TAG, "Range Start: " + dateFormat.format(startTime));
Log.i(TAG, "Range End: " + dateFormat.format(endTime));
DataReadRequest readRequest = new DataReadRequest.Builder()
.read(DataType.TYPE_ACTIVITY_SEGMENT)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
// [END build_read_data_request]
return readRequest;
}
并执行该查询:
DataReadRequest readRequest = queryFitnessData();
DataReadResult dataReadResult = Fitness.HistoryApi.readData(
mClient, readRequest).await(1, TimeUnit.MINUTES);
printData(dataReadResult);
我猜我漏掉了什么。我也阅读了关于同一主题的 post,但直到现在才成功。
[问题]
如何从 Google Fit 获取记录的睡眠活动健身数据?
[编辑]
这是 Google Fit 时间轴中 Android 数据的睡眠截图
终于,我明白了。感谢 Urbandroid 团队的 Martin Stava。
final SessionReadRequest.Builder sessionBuilder = new SessionReadRequest.Builder()
.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
.read(DataType.TYPE_ACTIVITY_SEGMENT)
.readSessionsFromAllApps()
.enableServerQueries();
final SessionReadRequest readRequest = sessionBuilder.build();
// Invoke the Sessions API to fetch the session with the query and wait for the result
// of the read request.
SessionReadResult sessionReadResult = SessionsApi.readSession(apiClient, readRequest).await(120, TimeUnit.SECONDS);
Status status = sessionReadResult.getStatus();
我目前正在尝试从 Google 中获取 Sleep as Android 数据以适合我自己的 android 应用程序。我从 post 中读到 Android 睡眠数据存储在 Google Fit 中,任何第 3 方应用程序都可以查看它们。为此,我使用历史会话。这是读取睡眠数据的示例代码:
public static DataReadRequest queryFitnessData() {
// [START build_read_data_request]
// Setting a start and end date using a range of 1 week before this moment.
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.i(TAG, "Range Start: " + dateFormat.format(startTime));
Log.i(TAG, "Range End: " + dateFormat.format(endTime));
DataReadRequest readRequest = new DataReadRequest.Builder()
.read(DataType.TYPE_ACTIVITY_SEGMENT)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
// [END build_read_data_request]
return readRequest;
}
并执行该查询:
DataReadRequest readRequest = queryFitnessData();
DataReadResult dataReadResult = Fitness.HistoryApi.readData(
mClient, readRequest).await(1, TimeUnit.MINUTES);
printData(dataReadResult);
我猜我漏掉了什么。我也阅读了关于同一主题的
[问题]
如何从 Google Fit 获取记录的睡眠活动健身数据?
[编辑]
这是 Google Fit 时间轴中 Android 数据的睡眠截图
终于,我明白了。感谢 Urbandroid 团队的 Martin Stava。
final SessionReadRequest.Builder sessionBuilder = new SessionReadRequest.Builder()
.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
.read(DataType.TYPE_ACTIVITY_SEGMENT)
.readSessionsFromAllApps()
.enableServerQueries();
final SessionReadRequest readRequest = sessionBuilder.build();
// Invoke the Sessions API to fetch the session with the query and wait for the result
// of the read request.
SessionReadResult sessionReadResult = SessionsApi.readSession(apiClient, readRequest).await(120, TimeUnit.SECONDS);
Status status = sessionReadResult.getStatus();