Jawaban:
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 panggilan setKeepScreenOn(true)pada itu Viewatau mengatur keepScreenOnproperti untuk true. Ini akan mencegah layar mati saat Viewada di layar. Tidak diperlukan izin khusus untuk ini.
setKeepScreenOn(true)efek hanya akan berlaku bila Viewterlihat.
Saya menemukan solusi lain yang berfungsi: tambahkan baris berikut ke aplikasi Anda di bawah acara onCreate.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Proyek Cordova sampel saya terlihat seperti ini:
package com.apps.demo;
import android.os.Bundle;
import android.view.WindowManager;
import org.apache.cordova.*;
public class ScanManActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
super.loadUrl("http://stackoverflow.com");
}
}
Setelah itu, aplikasi saya tidak akan tidur ketika sedang terbuka. Terima kasih atas jawabannya, masuk ke xSus.
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
Tetapkan bendera di Jendela Aktivitas seperti di bawah ini
@Override public void onResume() {
super.onResume();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override public void onPause() {
super.onPause();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Dari shell root (mis. Adb shell), Anda dapat mengunci dengan:
echo mylockname >/sys/power/wake_lock
Setelah itu perangkat akan tetap terjaga, sampai Anda melakukannya:
echo mylockname >/sys/power/wake_unlock
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/
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 AlarmManageruntuk menyalakan acara dan membangunkan ponsel dan (aplikasi Anda) untuk melakukan apa yang perlu Anda lakukan dan kemudian tidur lagi: Manajer Alarm (sumber: commonsware.com)