Помогите пользователям понять свои привычки сна

Sleep API — библиотека на базе сервисов Google Play — позволяет приложениям определять, когда пользователь засыпает и просыпается.

Получив разрешение от пользователя, сервисы Google Play собирают информацию, связанную с окружающей яркостью, движением устройства и т. д., чтобы определить время, когда пользователь засыпает и просыпается. Ваше приложение может подписаться на обновления этой информации. Таким образом, ваше приложение может информировать пользователей об их привычках сна и побуждать их улучшать гигиену сна и общее самочувствие.

Прежде чем начать

Чтобы подготовить свое приложение, выполните действия, описанные в следующих разделах.

Предварительные условия приложения

Убедитесь, что файл сборки вашего приложения использует следующие значения:

  • minSdkVersion 29 или выше.
  • compileSdkVersion 29 или выше.
.

Настройте свое приложение

В файле build.gradle на уровне проекта включите репозиторий Maven от Google и центральный репозиторий Maven в разделы buildscript и allprojects :

 buildscript {
    repositories {
        google()
        mavenCentral()
    }
} 

allprojects { repositories { google() mavenCentral() } }

Добавьте зависимость служб Google Play для API Sleep в файл сборки Gradle вашего модуля , который обычно называется app/build.gradle :

 dependencies {
    implementation 'com.google.android.gms:play-services-location:23.2.0'
} 

Добавьте разрешение ACTIVITY_RECOGNITION в ваш AndroidManifest.xml тег с android:name=”android.permission.ACTIVITY_RECOGNITION” .

 <manifest>
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<application>...</application>
</manifest>

Зарегистрируйтесь для получения обновлений о сне

Перед регистрацией на обновления сначала проверьте, предоставил ли пользователь разрешение ACTIVITY_RECOGNITION . Для получения дополнительной информации о разрешениях см. Запрос разрешений для приложения .

После получения разрешения зарегистрируйтесь для получения обновлений поведения пользователя во время сна, включая сегменты сна и результаты классификации событий сна, вызвав requestSleepSegmentUpdates() .

 val task = ActivityRecognition.getClient(context)
    .requestSleepSegmentUpdates(
        pendingIntent,
        SleepSegmentRequest.getDefaultSleepSegmentRequest())
    .addOnSuccessListener {
        viewModel.updateSubscribedToSleepData(true)
        Log.d(TAG, "Successfully subscribed to sleep data.")
    }
    .addOnFailureListener { exception ->
        Log.d(TAG, "Exception when subscribing to sleep data: $exception")
    }

Узнайте больше об API сна

Ваше приложение может получать информацию о времени сна из ежедневного события обновления сегмента сна.

Каждое событие сегмента сна содержит информацию о том, обнаружил ли API сон или может обнаружить сон. Событие сегмента также включает время, когда пользователь, скорее всего, засыпал и просыпался, исходя из доступных данных датчиков.

Ваше приложение также может получать регулярные обновления о событиях классификации сна.

Каждое событие классификации сна предоставляет отметку времени, а также значения, которые представляют движение устройства, яркость окружающей среды и вероятность того, что пользователь в это время спит. Например, если уверенность во сне значительно возрастает между одной временной меткой и следующей временной меткой, а окружающая яркость значительно снижается между этими двумя временными метками, вероятно, пользователь недавно заснул.

Ваше приложение может комбинировать эту информацию с дополнительными данными, предоставленными пользователем, чтобы более уверенно определять, когда пользователь засыпает и просыпается.

Пример приложения SleepSampleKotlin демонстрирует сквозной рабочий процесс с использованием Sleep API.