Gibt es eine Möglichkeit, den Bildschirmschoner zu deaktivieren, während meine App ausgeführt wird?
Das Dimmen des Bildschirms ist das, was ich meine.
Gibt es eine Möglichkeit, den Bildschirmschoner zu deaktivieren, während meine App ausgeführt wird?
Das Dimmen des Bildschirms ist das, was ich meine.
Antworten:
Sie möchten so etwas verwenden:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Ich benutzte:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
um das Bildschirm-Timeout zu deaktivieren und
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
um es wieder zu aktivieren.
Es gibt auch eine XML-Methode, die Google empfiehlt:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Überprüfen Sie Google Slides - Folie 16.
"Wakelocks sind teuer, wenn sie vergessen werden (...) Erwägen Sie die Verwendung von Android: keepScreenOn, um die Richtigkeit sicherzustellen."
PowerManager.newWakeLockund getWindow().addFlagsaus irgendeinem Grund nicht funktioniert, tat dies.
Es ist wichtig zu beachten, dass diese Methoden alle vom UI-Thread ausgeführt werden müssen, damit sie funktionieren. Siehe Ändern von KeepScreenOn von Javascript in der Android Cordova App
Fügen Sie einfach die folgende Zeile in Ihre hinzu MainActivityund Ihre App schaltet niemals das Licht aus.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
In einer Ansicht, in meinem Fall einer SurfaceView-Unterklasse, können Sie den Bildschirm immer einschalten. Ich wollte, dass der Bildschirm eingeschaltet bleibt, während diese Ansicht noch Material zeichnet.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Setzen Sie dies auf onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
Und das manifestiert sich bei dir
<uses-permission android:name="android.permission.WAKE_LOCK" />
Vergiss es nicht
wakeLock.release();
bei onStop
PARTIAL_WAKE_LOCKErmöglicht das Ausschalten des Bildschirms.
Dies ist der beste Weg, um dies zu lösen
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
Dies ist der bessere Weg, um damit umzugehen, wenn wir einen bestimmten Bildschirm ständig wach halten möchten. Andernfalls müssen wir uns selbst darum kümmern, wann wir ihn aktivieren und deaktivieren müssen
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) ist die beste Lösung für natives Android.
2. Wenn Sie mit der React Android-Anwendung arbeiten möchten, verwenden Sie bitte den folgenden Code.
@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);
}
});
}
}
Dies kann durch den Erwerb eines Wake Lock erfolgen.
Ich habe es nicht selbst getestet, aber hier ist ein kleines Tutorial dazu.
View#setKeepScreenOnoder sein XML-Layout-Attribut äquivalent,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"ist meiner Meinung nach die einzig gültige Antwort für Aktivitäten. Halten Sie sich von Wakelocks fern, es sei denn, dies ist unbedingt erforderlich.
View.setKeepScreenOn()[Link] [1]?. Ich habe es selbst nie benutzt. [1]: developer.android.com/reference/android/view/…