首页 > 解决方案 > 在 Android Wear 上阅读每日步数

问题描述

我正在尝试用一些信息写一个表盘。现在我想阅读每日步数...

我试过这段代码:

        Calendar start;

        start = Calendar.getInstance();
        start.setTimeInMillis(System.currentTimeMillis());
        start.set(Calendar.MILLISECOND, 0);
        start.set(Calendar.SECOND, 0);
        start.set(Calendar.MINUTE, 0);
        start.set(Calendar.HOUR_OF_DAY, 0);

        try
        {
          GoogleSignInOptionsExtension fitnessOptions =
                  FitnessOptions.builder()
                          .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
                          .build();

          GoogleSignInAccount googleSignInAccount =
                  GoogleSignIn.getAccountForExtension(getApplicationContext(), fitnessOptions);

          Task<DataReadResponse> response = Fitness.getHistoryClient(getApplicationContext(), googleSignInAccount)
                  .readData(new DataReadRequest.Builder()
                          .read(DataType.TYPE_STEP_COUNT_DELTA)
                          .setTimeRange(start.getTimeInMillis(), System.currentTimeMillis(), TimeUnit.MILLISECONDS)
                          .build());

          DataReadResponse readDataResult = Tasks.await(response);
          DataSet dataSet = readDataResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
          total = dataSet.isEmpty()
                  ? 0
                  : dataSet.getDataPoints().get(0).getValue(Field.FIELD_STEPS).asInt();
        }
        catch(ExecutionException e)
        {
          e.printStackTrace();
        }
        catch(InterruptedException e)
        {
          e.printStackTrace();
        }

编译时没有错误,没有关于模拟器的信息,但是当我尝试在我的 SmartWatch 上运行它时,我得到了这个异常:

05-10 21:47:28.045  4273  4273 D PilotWatch: Heart rate: 0
05-10 21:47:28.135  4273  4902 W System.err: java.util.concurrent.ExecutionException: com.google.android.gms.common.api.ApiException: 17: API: Fitness.CLIENT is not available on this device. Connection failed with: ConnectionResult{statusCode=INVALID_ACCOUNT, resolution=null, message=null}
05-10 21:47:28.135  4273  4902 W System.err:    at com.google.android.gms.tasks.Tasks.zza(com.google.android.gms:play-services-tasks@@17.0.2:69)
05-10 21:47:28.135  4273  4902 W System.err:    at com.google.android.gms.tasks.Tasks.await(com.google.android.gms:play-services-tasks@@17.0.2:23)
05-10 21:47:28.135  4273  4902 W System.err:    at de.lucabert.pilotwatch.PilotWatch$Engine$DailyStepTask.doInBackground(PilotWatch.java:284)
05-10 21:47:28.135  4273  4902 W System.err:    at de.lucabert.pilotwatch.PilotWatch$Engine$DailyStepTask.doInBackground(PilotWatch.java:252)
05-10 21:47:28.135  4273  4902 W System.err:    at android.os.AsyncTask$2.call(AsyncTask.java:295)
05-10 21:47:28.135  4273  4902 W System.err:    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-10 21:47:28.135  4273  4902 W System.err:    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
05-10 21:47:28.135  4273  4902 W System.err:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
05-10 21:47:28.135  4273  4902 W System.err:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
05-10 21:47:28.135  4273  4902 W System.err:    at java.lang.Thread.run(Thread.java:818)
05-10 21:47:28.135  4273  4902 W System.err: Caused by: com.google.android.gms.common.api.ApiException: 17: API: Fitness.CLIENT is not available on this device. Connection failed with: ConnectionResult{statusCode=INVALID_ACCOUNT, resolution=null, message=null}
05-10 21:47:28.136  4273  4902 W System.err:    at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(com.google.android.gms:play-services-base@@17.2.1:4)
05-10 21:47:28.136  4273  4902 W System.err:    at com.google.android.gms.common.internal.zaj.zaf(com.google.android.gms:play-services-base@@17.2.1:2)
05-10 21:47:28.136  4273  4902 W System.err:    at com.google.android.gms.common.internal.zai.onComplete(com.google.android.gms:play-services-base@@17.2.1:6)
05-10 21:47:28.136  4273  4902 W System.err:    at com.google.android.gms.common.api.internal.BasePendingResult.zaa(com.google.android.gms:play-services-base@@17.2.1:176)
05-10 21:47:28.136  4273  4902 W System.err:    at com.google.android.gms.common.api.internal.BasePendingResult.setResult(com.google.android.gms:play-services-base@@17.2.1:135)
05-10 21:47:28.136  4273  490

第 284 行是 DataReadResponse readDataResult = Tasks.await(response);
为什么 Fitness.CLIENT 不可用?我怎样才能使它可用?
我真的不知道我能做些什么来获得日常步骤......我为此目的找到了许多代码示例,但没有任何效果......

有人能帮我吗?

非常感
谢卢卡

标签: javaandroid

解决方案


推荐阅读