به کاربران کمک کنید تا عادات خواب خود را درک کنند

Sleep API، کتابخانه‌ای که توسط سرویس‌های گوگل پلی پشتیبانی می‌شود، به برنامه‌ها اجازه می‌دهد تا زمان خواب و بیداری کاربر را تعیین کنند.

پس از دریافت اجازه از کاربر، سرویس‌های گوگل پلی اطلاعات مربوط به روشنایی اطراف، حرکت دستگاه و موارد دیگر را جمع‌آوری می‌کنند تا زمان خواب و بیداری کاربر را حدس بزنند. برنامه شما می‌تواند برای به‌روزرسانی این اطلاعات مشترک شود. به این ترتیب، برنامه شما می‌تواند کاربران را در مورد عادات خوابشان مطلع کند و به آنها در بهبود بهداشت خواب و رفاه کلی کمک کند.

قبل از اینکه شروع کنی

برای آماده‌سازی برنامه خود، مراحل بخش‌های زیر را تکمیل کنید.

پیش‌نیازهای برنامه

مطمئن شوید که فایل ساخت برنامه شما از مقادیر زیر استفاده می‌کند:

  • minSdkVersion 29 یا بالاتر.
  • یک compileSdkVersion با 29 یا بالاتر.
.

برنامه خود را پیکربندی کنید

در فایل build.gradle در سطح پروژه، مخزن Maven گوگل و مخزن مرکزی Maven را هم در بخش‌های buildscript و هم allprojects خود وارد کنید:

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

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

وابستگی سرویس‌های گوگل پلی برای Sleep API را به فایل ساخت Gradle ماژول خود که معمولاً app/build.gradle است، اضافه کنید:

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

درباره Sleep API بیشتر بدانید

برنامه شما می‌تواند اطلاعات مربوط به زمان خواب را از رویداد به‌روزرسانی روزانه بخش خواب بازیابی کند.

هر رویداد بخش خواب حاوی اطلاعاتی در مورد اینکه آیا API خواب را تشخیص داده است یا می تواند خواب را تشخیص دهد. رویداد بخش همچنین شامل زمان‌هایی است که کاربر به احتمال زیاد به خواب رفته و بر اساس داده‌های حسگر موجود بیدار شده است.

برنامه شما همچنین می‌تواند به‌روزرسانی‌های منظم درباره رویدادهای طبقه‌بندی خواب دریافت کند.

هر رویداد طبقه‌بندی خواب یک مهر زمانی همراه با مقادیری ارائه می‌کند که حرکت دستگاه، روشنایی محیط و احتمال خواب بودن کاربر در آن زمان را نشان می‌دهد. به عنوان مثال، اگر اطمینان خواب بین یک مهر زمانی و مهر زمانی بعدی به طور قابل توجهی افزایش یابد، و اگر روشنایی اطراف بین همان 2 مهر زمانی به طور قابل توجهی کاهش یابد، این احتمال وجود دارد که کاربر اخیراً به خواب رفته باشد.

برنامه شما می تواند این اطلاعات را با داده های اضافی ارائه شده توسط کاربر ترکیب کند تا با اطمینان بیشتری مشخص کند که کاربر چه زمانی به خواب می رود و بیدار می شود.

برنامه نمونه SleepSampleKotlin با استفاده از Sleep API یک گردش کار سرتاسر را نشان می دهد.