Adakah cara untuk menonaktifkan screensaver saat aplikasi saya berjalan?
Yang saya maksud adalah peredupan layar.
Adakah cara untuk menonaktifkan screensaver saat aplikasi saya berjalan?
Yang saya maksud adalah peredupan layar.
Jawaban:
Anda ingin menggunakan sesuatu seperti ini:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Saya menggunakan:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
untuk menonaktifkan batas waktu layar dan
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
untuk mengaktifkannya kembali.
Ada juga cara XML yang direkomendasikan Google:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Periksa Google Slides - Slide 16.
"Wakelocks mahal jika dilupakan (...) Pertimbangkan untuk menggunakan android: keepScreenOn untuk memastikan kebenaran"
PowerManager.newWakeLockdan getWindow().addFlagstidak berfungsi karena alasan tertentu, ini berhasil.
Penting untuk diperhatikan bahwa semua metode ini harus dijalankan dari UI thread agar berfungsi. Lihat mengubah KeepScreenOn dari javascript di aplikasi Android Cordova
Tambahkan sederhana di bawah garis ke dalam Anda MainActivitydan Aplikasi Anda tidak pernah mematikan lampu.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Dalam Tampilan, dalam kasus saya subkelas SurfaceView, Anda dapat menyetel layar selalu aktif. Saya ingin layar tetap menyala saat tampilan ini masih menggambar sesuatu.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Taruh ini di onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
Dan ini pada Anda terwujud
<uses-permission android:name="android.permission.WAKE_LOCK" />
Jangan lupa
wakeLock.release();
di onStop
PARTIAL_WAKE_LOCKmemungkinkan layar untuk mati.
ini adalah cara terbaik untuk menyelesaikannya
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
adalah cara yang lebih baik untuk menangani ini jika kita ingin membuat layar tertentu selalu aktif setiap saat jika tidak kita harus menangani diri sendiri kapan harus mengaktifkannya dan menonaktifkannya
https://developer.android.com/training/scheduling/wakelock.html
procedure SetSleep(aEnable:Boolean);
var
vFlags: integer;
begin
vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or
TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or
TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or
TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;
if aEnable then
begin
CallInUIThread ( // uses FMX.Helpers.Android
procedure
begin
TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
end );
end
else
CallInUIThread (
procedure
begin
TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
end );
end;
1. getWindow (). AddFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); adalah solusi terbaik untuk Android Asli.
2. Jika Anda ingin menggunakan aplikasi Android React, gunakan kode di bawah ini.
@ReactMethod
public void activate() {
final Activity activity = getCurrentActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
});
}
}
Ini dapat dilakukan dengan memperoleh Wake Lock.
Saya tidak mengujinya sendiri, tetapi berikut adalah tutorial kecil tentang ini.
View#setKeepScreenOnatau atribut layout xml-nya yang setara,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"adalah satu-satunya jawaban yang valid untuk kegiatan menurut saya. Jauhi wakelock kecuali benar-benar diperlukan.
View.setKeepScreenOn()[link] [1] ?. Saya sendiri tidak pernah menggunakannya. [1]: developer.android.com/reference/android/view/…