Bagaimana cara mencegah perangkat Android agar tidak tidur secara terprogram?
Salah satu opsi adalah menggunakan kunci bangun . Contoh dari dokumen:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
// screen and CPU will stay awake during this section
wl.release();
Ada juga tabel di halaman ini yang menjelaskan berbagai jenis wakelocks.
Ketahuilah bahwa beberapa kehati-hatian perlu diperhatikan saat menggunakan kunci bangun. Pastikan Anda selalu release()
mengunci saat selesai (atau tidak di latar depan). Jika tidak, aplikasi Anda dapat berpotensi menyebabkan baterai terkuras dan penggunaan CPU.
Dokumentasi juga berisi halaman yang bermanfaat yang menjelaskan berbagai pendekatan untuk membuat perangkat tetap terjaga, dan kapan Anda memilih untuk menggunakannya. Jika "mencegah perangkat tidur" hanya mengacu pada layar (dan tidak menjaga CPU aktif) maka kunci bangun mungkin lebih dari yang Anda butuhkan.
Anda juga perlu memastikan bahwa Anda memiliki izin WAKE_LOCK yang diatur dalam manifes Anda untuk menggunakan metode ini.
Jika Anda hanya ingin mencegah modus tidur pada spesifik
View
, hanya panggilansetKeepScreenOn(true)
pada ituView
atau mengaturkeepScreenOn
properti untuktrue
. Ini akan mencegah layar mati saatView
ada di layar. Tidak diperlukan izin khusus untuk ini.sumber
setKeepScreenOn(true)
efek hanya akan berlaku bilaView
terlihat.Saya menemukan solusi lain yang berfungsi: tambahkan baris berikut ke aplikasi Anda di bawah acara onCreate.
Proyek Cordova sampel saya terlihat seperti ini:
Setelah itu, aplikasi saya tidak akan tidur ketika sedang terbuka. Terima kasih atas jawabannya, masuk ke xSus.
sumber
android:keepScreenOn="true"
bisa menjadi pilihan yang lebih baik untuk memiliki dari tata letak XML.Info lebih lanjut: https://developer.android.com/training/scheduling/wakelock.html
sumber
Tetapkan bendera di Jendela Aktivitas seperti di bawah ini
sumber
Dari shell root (mis. Adb shell), Anda dapat mengunci dengan:
Setelah itu perangkat akan tetap terjaga, sampai Anda melakukannya:
Dengan string yang sama untuk 'mylockname'.
Perhatikan bahwa ini tidak akan mencegah layar menjadi hitam, tetapi itu akan mencegah CPU dari tidur.
Perhatikan bahwa / sys / power / wake_lock adalah read-write untuk radio pengguna (1001) dan sistem grup (1000), dan, tentu saja, root.
Referensi ada di sini: http://lwn.net/Articles/479841/
sumber
apa yang dikatakan @eldarerathis benar dalam semua aspek, kunci bangun adalah cara yang tepat untuk menjaga perangkat agar tidak tidur.
Saya tidak tahu apa yang perlu dilakukan aplikasi tetapi sangat penting bagi Anda untuk memikirkan bagaimana mendesain aplikasi Anda sehingga Anda tidak memaksa ponsel untuk tetap terjaga karena lebih banyak yang Anda butuhkan, atau masa pakai baterai akan sangat menderita.
Saya akan mengarahkan Anda ke contoh yang sangat bagus ini tentang cara menggunakan
AlarmManager
untuk menyalakan acara dan membangunkan ponsel dan (aplikasi Anda) untuk melakukan apa yang perlu Anda lakukan dan kemudian tidur lagi: Manajer Alarm (sumber: commonsware.com)sumber
Jika Anda adalah pengguna Xamarin, ini solusinya:
sumber