Google Fit无法正确同步到android应用

问题描述

问题是它正在从Google Fit api获取步骤,但是我必须终止我的应用程序并重新启动我的应用程序,然后它才能同步到google fit。我想要的是保持从Google Fit api获取步骤而不会终止该应用程序。请您告诉我避免丢失应用程序并以正确方式获取步骤的确切方法

// onCreateView

 mGoogleapiclient = new Googleapiclient.Builder(getActivity())
                    .addApi(fitness.HISTORY_API)
                    .addScope(new Scope(Scopes.fitness_ACTIVITY_READ_WRITE))
                    .addConnectionCallbacks(this)
                    .enableAutoManage(getActivity(),this)
                    .build();
            if (runningTask != null)
                runningTask.cancel(true);
            runningTask = new ViewWeekStepCountTask();
            runningTask.execute();

// Asynctask以避免ANR

private class ViewWeekStepCountTask extends AsyncTask<Void,Void,Void> {
        protected Void doInBackground(Void... params) {

            Calendar cal = Calendar.getInstance();
            Date Now = new Date();
            cal.setTime(Now);
            long endTime = cal.getTimeInMillis();
            cal.add(Calendar.DAY_OF_WEEK,-1);
            long startTime = cal.getTimeInMillis();

            java.text.DateFormat dateFormat = DateFormat.getDateInstance();
            Log.e("History","Range Start: " + dateFormat.format(startTime));
            Log.e("History","Range End: " + dateFormat.format(endTime));


                    DataSource ESTIMATED_STEP_DELTAS = new DataSource.Builder()
                            .setDataType(DataType.TYPE_STEP_COUNT_DELTA)
                            .setType(DataSource.TYPE_DERIVED)
                            .setStreamName("estimated_steps")
                            .setAppPackageName("com.google.android.gms")
                            .build();

                    DataReadRequest readRequest = new DataReadRequest.Builder()
                            .aggregate(ESTIMATED_STEP_DELTAS,DataType.AGGREGATE_STEP_COUNT_DELTA)
                            .bucketByTime(1,TimeUnit.DAYS)
                            .setTimeRange(startTime,endTime,TimeUnit.MILLISECONDS)
                            .build();


                    long total = 0;
                    PendingResult<DailyTotalResult> result = fitness.HistoryApi.readDailyTotal(mGoogleapiclient,DataType.TYPE_STEP_COUNT_DELTA);
                    DailyTotalResult totalResult = result.await(30,TimeUnit.SECONDS);
                    if (totalResult.getStatus().isSuccess()) {
                        DataSet totalSet = totalResult.getTotal();
                        total = totalSet.isEmpty()
                                ? 0
                                : totalSet.getDataPoints().get(0).getValue(Field.FIELD_STEPS).asInt();
                    } else {
                        Log.w("error steps","There was a problem getting the step count.");
                    }
                    long globalsteps=0;
                    globalsteps = globalsteps + total;
                    Log.i("stepsfittoday","Total steps: " + total);
                    
                    DataReadResult dataReadResult = fitness.HistoryApi.readData(mGoogleapiclient,readRequest).await(1,TimeUnit.MINUTES);
                    if (dataReadResult.getBuckets().size() > 0) {
                        Log.e("History","Number of buckets: " + dataReadResult.getBuckets().size());
                        for (Bucket bucket : dataReadResult.getBuckets()) {
                            List<DataSet> dataSets = bucket.getDataSets();
                            for (DataSet dataSet : dataSets) {
                                showDataSet(dataSet);
                            }
                        }
                    }
//Used for non-aggregated data
                    else if (dataReadResult.getDataSets().size() > 0) {
                        Log.e("History","Number of returned DataSets: " + dataReadResult.getDataSets().size());
                        for (DataSet dataSet : dataReadResult.getDataSets()) {
                            showDataSet(dataSet);
                        }
                    }

            return null;
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)