Google Fit readSession не возвращается, если SessionReadRequest больше 4 дней? - PullRequest
0 голосов
/ 21 мая 2019

Я разрабатываю фитнес-приложение, которое использует носимые устройства для выполнения сеансов во время записи частоты пульса и расстояния. Затем эти сеансы (месяц назад) читаются на смартфоне с помощью SessionReadRequest. Вначале проблем не было, но метод readSession неожиданно отказывается возвращать какие-либо сессии.

Когда я изменяю SessionReadRequest с 1 месяца на действительно низкое число, например 3 дня, оно работает. Это также работает, когда я удаляю типы данных из SessionReadRequest. Тем не менее, я хотел бы показывать пользователям ежемесячные данные на вкладке истории моего приложения. Может ли кто-нибудь помочь мне с этим вопросом. Есть ли какие-то ограничения на SessionReadRequest? Ниже мой код для чтения сессий. После прочтения сеанса он попадает в список populateList, где они добавляются в список, и после завершения уведомляет RecyclerView.

    private Task<SessionReadResponse> readSession() {
        // Begin by creating the query.
        SessionReadRequest readRequest = readFitnessSession();

        // [START read_session]
        // Invoke the Sessions API to fetch the session with the query and wait for the result
        // of the read request. Note: Fitness.SessionsApi.readSession() requires the
        // ACCESS_FINE_LOCATION permission.
        return Fitness.getSessionsClient(this, GoogleSignIn.getLastSignedInAccount(this))
                .readSession(readRequest)
                .addOnSuccessListener(new OnSuccessListener<SessionReadResponse>() {
                    @Override
                    public void onSuccess(SessionReadResponse sessionReadResponse) {
                        // Get a list of the sessions that match the criteria to check the result.
                        Log.i(TAG, "Session read was successful");
                        populateList(sessionReadResponse);
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.i(TAG, "Failed to read session");
                    }
                });
        // [END read_session]
    }
private SessionReadRequest readFitnessSession() {
        // [START build_read_session_request]
        // Set a start and end time for query, using a start time of 1 month before this moment.
        Calendar cal = Calendar.getInstance();
        Date now = new Date();
        cal.setTime(now);
        long endTime = cal.getTimeInMillis();
        cal.add(Calendar.DAY_OF_YEAR, -2);
        long startTime = cal.getTimeInMillis();

        // Build a session read request
        SessionReadRequest readRequest = new SessionReadRequest.Builder()
                .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
                .read(DataType.TYPE_HEART_RATE_BPM)
                .read(DataType.AGGREGATE_DISTANCE_DELTA)
                .readSessionsFromAllApps()
                //.enableServerQueries()
                .build();
        // [END build_read_session_request]

        return readRequest;
    }
...