Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌拟合步数_Android_Wear Os_Google Fit - Fatal编程技术网

Android 谷歌拟合步数

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

我需要获取我的fit数据,以反映android fit应用程序中显示的数据。我尝试过使用Sensor API,但这个数字反映了自设备启动以来所采取的步骤数量,而不是当天

我还尝试过使用历史API并查询stepcount_cumulative和step_delta。这两个值都不反映fit API的值

我想到了将前一天的值存储在sharedPref中,然后减去差值得到真正的值。设备复位时的其他计算也需要考虑在内

有没有更简单的方法来获取我需要的值?

这对我很有用:

您正在寻找的功能:

   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
   }