Считайте количество шагов пользователя и другие данные фитнеса с датчиков без входа в Google - PullRequest
0 голосов
/ 28 декабря 2018

Я работаю над приложением, в котором я хочу прочитать количество шагов пользователя, а также другую информацию, связанную с фитнесом, такую ​​как частота сердечных сокращений (при подключении к смарт-диапазону), с обоих мобильных датчиков, а также с любых других фитнес-устройств, поддерживаемых Google Fit.SDK.

Я пытаюсь использовать Google Fit SDK для Android и пытаюсь получить доступ к данным через Sensor API, но каждый раз, когда код выполняется, я получаю сообщение об ошибке: «SIGN IN REQUIRED». Я не хочу, чтобы пользователь входил в определенную учетную запись Google. У меня есть собственная система входа в систему. Я также не хочу хранить данные в фитнес-магазине, так как у меня есть собственный бэкэнд. Все, что мне нужно, - это получить доступ к данным с датчиков.

Вотфиктивный код, который я пробовал:

private GoogleApiClient googleApiClient;

private static final int REQUEST_OAUTH = 1001;

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                mTextMessage.setText(R.string.title_home);
                return true;
            case R.id.navigation_dashboard:
                mTextMessage.setText(R.string.title_dashboard);
                return true;
            case R.id.navigation_notifications:
                mTextMessage.setText(R.string.title_notifications);
                return true;
        }
        return false;
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    mTextMessage = (TextView) findViewById(R.id.message);
    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

    googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Fitness.SENSORS_API)
            .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ))
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    googleApiClient.connect();

    PendingResult<Status> pendingResult = Fitness.SensorsApi.add(
            googleApiClient,
            new SensorRequest.Builder()
                    .setDataType(DataType.TYPE_STEP_COUNT_DELTA)
                    .setSamplingRate(1, TimeUnit.MINUTES)  // sample once per minute
                    .build(),
            new OnDataPointListener() {
                @Override
                public void onDataPoint(DataPoint dataPoint) {
                    Log.e("Data Point", dataPoint.toString());
                }
            });
}

@Override
public void onConnected(@Nullable Bundle bundle) {

}

@Override
public void onConnectionSuspended(int i) {

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (requestCode == REQUEST_OAUTH && resultCode == RESULT_OK) {
        googleApiClient.connect();
    }
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
    if (connectionResult.getErrorCode() == FitnessStatusCodes.NEEDS_OAUTH_PERMISSIONS) {
        try {
            connectionResult.startResolutionForResult(this, REQUEST_OAUTH);
        } catch (IntentSender.SendIntentException e) {
        }
    }
}

Можно ли добиться этого с помощью фитнеса SDK без входа в систему и, если нет, то какова другая альтернатива для доступа к этой информации в Android.

Я где-то читал, что могу использовать диспетчер сенсоров, но, думаю, с его помощью мне придется самому выполнять все расчеты, например, удалять ошибочные точки данных, полученные от сенсора из-за внезапного рывка и т. Д., Что, я думаю, уже выполняется fitness-sdk.

...