آموزش روشن نگه داشتن صفحه نمایش در اندروید
سلام دوستان در آموزش روشن نگه داشتن صفحه نمایش در اندروید می خواهیم نحوه کار با PowerManager را برای شما بگوییم شاید برنامه های مختلفی را دیده باشید که صفحه نمایش را روشن نگه می دارند همانند خیلی از بازی های معروف مانند Clash of Clans و خیلی بازی های دیگر بدون مقدمه چینی اضافی به بخش کد برنامه می رویم.
خب یک پروژه اندروید ایجاد کرده و در ادامه کار با ما همراه باشید.
ابتدا باید کلاس مورد نظر را فراخوانی کنیم.
1 | import android.os.PowerManager; |
همانطور که در بالا می بینید کلاس افزوده شده البته می توانید آن را بعدا نیز Import کنید. یک instance یا یک متغیر از PowerManger ایجاد میکنیم همانند پایین
1 | protected PowerManager.WakeLock mWakeLock; |
و در بخش کد برنامه بعد از setContentView کد زیر را قرار می دهیم.
1 2 3 | final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); this.mWakeLock.acquire(); |
در بالا یک power manger ساخته سپس آن را سفارشی سازی می کنیم بعد از تعریف آن نیاز داریم تا آن را acquire می کنیم خود واژه acquire به معنی به دست آوردن است.
بعد از انجام کار های بالا نیاز است تا دسترسی ( permission ) لازم را برای استفاده از Power Manager تعریف کنیم. پس خط زیر را در فایل AndroidManifest اضافه کنید.
1 | <uses-permission android:name="android.permission.WAKE_LOCK" /> |
و بخش مهم که هم اکنون به آن اشاره می کنم مربوط به زمانی است که شما می خواهید از برنامه خارج شوید شما باید یک Override تعریف کنید از نوع Ondestroy تا بعد از هر وقت که کار شما با Power Manager تمام شد به صورت اتوماتیک نابود ( destroy) شود برای این کار خط زیر را به برنامه اضافه کنید.
1 2 3 4 5 | @Override public void onDestroy() { this.mWakeLock.release(); super.onDestroy(); } |
و در نهایت بخش MainActivity ما به شکل زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import android.os.PowerManager; public class MyActivity extends Activity { protected PowerManager.WakeLock mWakeLock; @Override public void onCreate(final Bundle icicle) { setContentView(R.layout.main); final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); this.mWakeLock.acquire(); } @Override public void onDestroy() { this.mWakeLock.release(); super.onDestroy(); } } |
این آموزش هم همانند آموزش های قبل به پایان رسید انشاالله مفید بوده باشد.
سلام
در برنامه ای مثل اسنپ درایور، برنامه بعد از 30 ثانیه قفل میشه ولی همچنان صفحه دستگاه روشن میماند.
میشه در مورد این حالت هم توضیحاتی بدهید؟