使用Google Fit阅读体重

时间:2015-12-31 11:25:42

标签: android google-fit

我可以连接到Google健身并阅读重量数据,但不能查看我在Google健身网上看到的所有数据。我认为数据源出了问题,但我不确定。阅读代码是:

Instant endTime = Instant.now();
Instant startTime = DateTime.now().minusYears(10).toInstant();

DataReadRequest readRequest = new DataReadRequest.Builder ()
        .setTimeRange (startTime.getMillis(), endTime.getMillis(), TimeUnit.MILLISECONDS)
        .read (DataType.TYPE_WEIGHT)
        .build ();

DataReadResult dataReadResult = Fitness.HistoryApi.readData(MyApp.mClient, readRequest).await (1, TimeUnit.MINUTES);

1 个答案:

答案 0 :(得分:1)

https://developers.google.com/fit/rest/v1/authorization#OAuth2Authorizing

DataType.TYPE_WEIGHT必须由经过身份验证的Scopes.FITNESS_BODY_READ授权

    mClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.HISTORY_API)
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
            .addScope(new Scope(Scopes.FITNESS_BODY_READ))
            .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE))
            .addConnectionCallbacks(
                    new GoogleApiClient.ConnectionCallbacks() {
                        @Override
                        public void onConnected(Bundle bundle) {
                            Log.i(TAG, "Connected!!!");
                            // Now you can make calls to the Fitness APIs.  What to do?
                            // Look at some data!!
                            new InsertAndVerifyDataTask().execute();
                        }

                        @Override
                        public void onConnectionSuspended(int i) {
                            // If your connection to the sensor gets lost at some point,
                            // you'll be able to determine the reason and react to it here.
                            if (i == ConnectionCallbacks.CAUSE_NETWORK_LOST) {
                                Log.i(TAG, "Connection lost.  Cause: Network Lost.");
                            } else if (i == ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) {
                                Log.i(TAG, "Connection lost.  Reason: Service Disconnected");
                            }
                        }
                    }
            )
            .enableAutoManage(this, 0, new GoogleApiClient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(ConnectionResult result) {
                    Log.i(TAG, "Google Play services connection failed. Cause: " +
                            result.toString());
                    Snackbar.make(
                            MainActivity.this.findViewById(R.id.main_activity_view),
                            "Exception while connecting to Google Play services: " +
                                    result.getErrorMessage(),
                            Snackbar.LENGTH_INDEFINITE).show();
                }
            })
            .build();