Android 谷歌拟合步数
我需要获取我的fit数据,以反映android fit应用程序中显示的数据。我尝试过使用Sensor API,但这个数字反映了自设备启动以来所采取的步骤数量,而不是当天 我还尝试过使用历史API并查询stepcount_cumulative和step_delta。这两个值都不反映fit API的值 我想到了将前一天的值存储在sharedPref中,然后减去差值得到真正的值。设备复位时的其他计算也需要考虑在内 有没有更简单的方法来获取我需要的值?这对我很有用: 您正在寻找的功能:Android 谷歌拟合步数,android,wear-os,google-fit,Android,Wear Os,Google Fit,我需要获取我的fit数据,以反映android fit应用程序中显示的数据。我尝试过使用Sensor API,但这个数字反映了自设备启动以来所采取的步骤数量,而不是当天 我还尝试过使用历史API并查询stepcount_cumulative和step_delta。这两个值都不反映fit API的值 我想到了将前一天的值存储在sharedPref中,然后减去差值得到真正的值。设备复位时的其他计算也需要考虑在内 有没有更简单的方法来获取我需要的值?这对我很有用: 您正在寻找的功能: priv
private void getStepsToday() {
Calendar cal = Calendar.getInstance();
Date now = new Date();
cal.setTime(now);
long endTime = cal.getTimeInMillis();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
long startTime = cal.getTimeInMillis();
final DataReadRequest readRequest = new DataReadRequest.Builder()
.read(DataType.TYPE_STEP_COUNT_DELTA)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
DataReadResult dataReadResult =
Fitness.HistoryApi.readData(mGoogleApiFitnessClient, readRequest).await(1, TimeUnit.MINUTES);
DataSet stepData = dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
int totalSteps = 0;
for (DataPoint dp : stepData.getDataPoints()) {
for(Field field : dp.getDataType().getFields()) {
int steps = dp.getValue(field).asInt();
totalSteps += steps;
}
}
publishTodaysStepData(totalSteps);
}
尝试此新方法
HistoryApi.readDailyTotal()
。(需要Google play服务v24)
pendingreult result=HistoryApi.readDailyTotal(客户机,类型\步骤\计数\增量);
DailyTotalResult=结果。等待(30秒);
if(totalResult.getStatus().isSuccess()){
DataSet totalSet=totalResult.getTotal();
long total=totalSet.isEmpty()
? 0
:totalSet.getDataPoints().get(0).getValue(字段_步骤).asInt();
}否则{
//处理失败
}
您是在尝试读取其他ppl已登录到google fit的step数据,还是在尝试使用设备本身的step传感器?我认为这个问题可能有点不清楚,因为regardI对这两种实现都持开放态度。我更愿意从Fit api中提取数据,因为我认为这将更准确。这将准确地返回分类金额。但它不包括其他步骤。有可能让API也返回这些吗?我只是在玩Fit API一段时间,我不知道:/你能从链接发布一些内容吗?
PendingResult<DailyTotalResult> result = HistoryApi.readDailyTotal(client, TYPE_STEP_COUNT_DELTA);
DailyTotalResult totalResult = result.await(30, SECONDS);
if (totalResult.getStatus().isSuccess()) {
DataSet totalSet = totalResult.getTotal();
long total = totalSet.isEmpty()
? 0
: totalSet.getDataPoints().get(0).getValue(FIELD_STEPS).asInt();
} else {
// handle failure
}