Помогите пользователям понять свои привычки сна
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 сон или может обнаружить сон. Событие сегмента также включает время, когда пользователь, скорее всего, засыпал и просыпался, исходя из доступных данных датчиков.
Будьте в курсе вероятности того, что пользователь спит
Ваше приложение также может получать регулярные обновления о событиях классификации сна.
Каждое событие классификации сна предоставляет отметку времени, а также значения, которые представляют движение устройства, яркость окружающей среды и вероятность того, что пользователь в это время спит. Например, если уверенность во сне значительно возрастает между одной временной меткой и следующей временной меткой, а окружающая яркость значительно снижается между этими двумя временными метками, вероятно, пользователь недавно заснул.
Ваше приложение может комбинировать эту информацию с дополнительными данными, предоставленными пользователем, чтобы более уверенно определять, когда пользователь засыпает и просыпается.