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

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

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

Прежде чем вы начнете

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

Требования к приложению

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

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

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

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

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

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

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

 dependencies {
    implementation 'com.google.android.gms:play-services-location:23.1.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.