میتوانید قفل بیدارباش تنظیم کنید تا دستگاه بهطور موقت بیدار بماند.
وابستگیها
برنامه شما باید مجوز WAKE_LOCK را برای تنظیم قفل بیداری داشته باشد. این مجوز را به مانیفست برنامه خود اضافه کنید:
<uses-permission android:name="android.permission.WAKE_LOCK" />
ایجاد و دریافت قفل بیداری
برای به دست آوردن قفل بیداری، موارد زیر را انجام دهید:
برای ایجاد قفل بیداری،
PowerManager.newWakeLock()را فراخوانی کنید. این تابع یک شیءPowerManager.WakeLockایجاد و پیکربندی میکند، اما در واقع دستگاه را بیدار نگه نمیدارد.وقتی میخواهید دستگاه را بیدار نگه دارید، متد
acquire()از شیء wake lock را فراخوانی کنید.
برای مثال، اگر برنامه شما شامل یک گیرنده پخش است که از یک سرویس برای انجام برخی کارها استفاده میکند، میتوانید از این کد برای تنظیم و دریافت قفل بیدارباش استفاده کنید:
کاتلین
val wakeLock: PowerManager.WakeLock = (getSystemService(POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag").apply { acquire(WAKELOCK_TIMEOUT) } }
جاوا
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag"); wakeLock.acquire(WAKELOCK_TIMEOUT);
نکات کلیدی در مورد این کد
وقتی کد شیء قفل بیداری را ایجاد میکند، از نام کلاس به عنوان بخشی از برچسب قفل بیداری استفاده میکند. توصیه میکنیم نام بسته، کلاس یا متد خود را به عنوان بخشی از برچسب قفل بیداری قرار دهید. به این ترتیب، اگر خطایی رخ دهد، پیدا کردن قفل بیداری در کد منبع شما آسانتر میشود. برای اطلاعات بیشتر، به بخش «نامگذاری صحیح قفل بیداری» مراجعه کنید.
WakeLock.acquire(long)یک مقدار timeout بر حسب میلیثانیه ارسال میکند. سیستم پس از گذشت این مدت زمان، اگر قبلاً قفل بیداری را آزاد نکرده باشید، آن را آزاد میکند.