gpt4 book ai didi

android - 如何正确检索向 Google Fit 插入数据的应用程序包名称?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:14 25 4
gpt4 key购买 nike

我使用以下代码从 Google Fit 检索用户 Activity 列表:

public void getActivitiesData(Date from, Date till) {
DataReadRequest readRequest = new DataReadRequest.Builder()
.aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY)
.bucketByTime(1, TimeUnit.DAYS)
.setTimeRange(from.getTime(), till.getTime(), TimeUnit.MILLISECONDS)
.build();

Fitness.HistoryApi.readData(apiClient, readRequest).setResultCallback(new com.google.android.gms.common.api.ResultCallback<DataReadResult>() {
@Override
public void onResult(DataReadResult dataReadResult) {
Status status = dataReadResult.getStatus();
if (status.isSuccess()) {

for (Bucket bucket : dataReadResult.getBuckets()) {
if (!bucket.getDataSets().isEmpty()) {
DataSet dataSet = bucket.getDataSets().get(0);
String sourceAppPackageName = getSourceAppPackageNameFromDataSet(dataSet);
for (DataPoint dp : dataSet.getDataPoints()) {
for (Field field : dp.getDataType().getFields()) {
String fieldName = field.getName();
if (fieldName != null && fieldName.equals("activity")) {
String type = FitnessActivities.getValue(dp);
Date from = new Date(dp.getStartTime(TimeUnit.MILLISECONDS));
Date till = new Date(dp.getEndTime(TimeUnit.MILLISECONDS));

// store retrieved values to the data object, omitted
}
}
}
}
}
}
}
});
}

private static String getSourceAppPackageNameFromDataSet(DataSet dataSet) {
String result = null;

if (dataSet.getDataSource() != null) {
result = dataSet.getDataSource().getAppPackageName();
}

return result;
}

为了将 Activity 插入 Google Fit,我使用了 Google Fit 应用程序和 Runkeeper(目前,这些应用程序似乎只是与 Fit 集成的应用程序)。

我的代码按预期检索这些 Activity ,但是,对于每个 Activity ,我的 getSourceAppPackageNameFromDataSet() 方法返回 "com.google.android.gms" 作为包名称.根据 Data Attribution section in Google Fit documentation ,我希望该方法返回 Runkeeper 或 Google Fit 的包名称,但这并没有发生。

我是不是做错了什么,或者这是 Google Fit 中的错误?

最佳答案

DataPoint.getOriginalDataSource().getAppPackageName() 可以解决问题。它为我的 Withings 电子秤返回 com.withings.wiscale2,而 DataSet.getDataSource().getAppPackageName() 总是返回 com.google.android.gms.

这里有一个类似的问题:DataSource.getAppPackageName() always returns "com.google.android.gms" in Google Fit

关于android - 如何正确检索向 Google Fit 插入数据的应用程序包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com