Как получить Goolge Fit API, работающий в Android Studio - PullRequest
0 голосов
/ 11 февраля 2020

Я создал проект в Google, выбрал API, который я хочу использовать, создал ключ API и ключ OAuth. Я скопировал ключ и вложил в мой файл манифеста. Я добавил разрешение

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="#####################################"/>

Я слежу за этой документацией из Google Fit API в android docs https://developers.google.com/fit/android/get-started. но я не могу получить ни "success", ни "fail", как указано в методе getHistoryClient (). Нужно ли создавать фитнес-логин с помощью Google Studio, используя Fit API для записи показаний. Кроме того, я должен иметь возможность войти в систему из приложения и даже не предлагает мне сделать это. Я пытался найти учебники YouTube, но ничего на Google Fit API. В каждом уроке, который я видел до сих пор, используется какой-то внутренний датчик. Я хочу, чтобы иметь возможность воспользоваться API Google. Любые предложения оценили, это код, который я имею в своем классе, который почти такой же, как Google Fit DOCS

fitnessOptions = FitnessOptions.builder()
                .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
                .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
                .build();

        GoogleSignInAccount account = GoogleSignIn.getAccountForExtension(getActivity(), fitnessOptions);

        if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
            GoogleSignIn.requestPermissions(
                    this, // your activity
                    GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1
                    account,
                    fitnessOptions);
        } else {
            accessGoogleFit();
        }

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            if (requestCode == GOOGLE_FIT_PERMISSIONS_REQUEST_CODE) {
                accessGoogleFit();
            }
        }
    }

    private void accessGoogleFit() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        long endTime = cal.getTimeInMillis();
        cal.add(Calendar.YEAR, -1);
        long startTime = cal.getTimeInMillis();

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

        GoogleSignInAccount account = GoogleSignIn
                .getAccountForExtension(getActivity(), fitnessOptions);

        Fitness.getRecordingClient(getActivity(), GoogleSignIn.getLastSignedInAccount(getActivity()))
                .subscribe(DataType.TYPE_ACTIVITY_SEGMENT)
                .addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        Log.i(TAG, "Successfully subscribed!");
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.i(TAG, "There was a problem subscribing.");
                    }
                });
    }
...