wake-up-neo.com

Halten Sie den Bildschirm während meiner Aktivität wach

Ich habe drei Aktivitäten in meiner App. Ich möchte den Bildschirm bei der zweiten Aktivität wach halten. Der Bildschirm sollte bei meiner zweiten Aktivität nicht ausgeschaltet werden, es sei denn, die Taste "Sperren" wird manuell gedrückt. Ich habe viele Links durchlaufen, aber sie scheinen mir unklar zu sein.

54
user838522

Wie im Android Tutorial Keep the Screen On beschrieben, können Sie dies auf verschiedene Arten tun. Sie können FLAG_KEEP_SCREEN_ON im Fenster der Aktivität einstellen:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Ein XML-Äquivalent dafür ist das Hinzufügen des Attributs Android:keepScreenOn="true" zur Stammansicht des Layouts Ihrer Aktivität. Das programmgesteuerte Setzen des Flags hat den Vorteil, dass Sie es verwenden können

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

wenn Sie den Bildschirm nicht mehr zwingen müssen, während Ihre Aktivität ausgeführt wird, eingeschaltet zu bleiben.

Eine andere Möglichkeit, den Bildschirm (und bestimmte andere Ressourcen) zu steuern, ist die Verwendung einer Aktivierungssperre:

mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
    .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();

Das Manifest muss diese Berechtigung enthalten:

<uses-permission Android:name="Android.permission.WAKE_LOCK"/>

Wie im Lernprogramm erläutert, ist eine Reaktivierungssperre jedoch besser für andere Anwendungsfälle geeignet (z. B. für einen Dienst oder eine Hintergrundaufgabe, bei der die CPU bei ausgeschaltetem Bildschirm weiter ausgeführt werden muss).

148
Ted Hopp

Ich finde diese Lösung viel einfacher:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" // Whatever your layout is
    ...
    Android:keepScreenOn="true"> // Add this line

Fügen Sie dies einfach zu Ihrem Aktivitätslayout-XML hinzu.

48

Wie ich Ihre Frage verstehe, denke ich, müssen Sie WAKE_LOCK dafür in deiner Bewerbung.

Etwas wie,

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");    
mWakeLock.acquire();

Fügen Sie in der Datei manifest.xml Ihrer Anwendung Folgendes hinzu:

<uses-permission Android:name="Android.permission.WAKE_LOCK" />
7
user370305

versuche das zu benutzen

getWindow().addFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN
                                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
1
bindal

Dieser Code ist veraltet. Verwenden Sie stattdessen diesen Code:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

Rufen Sie nach Abschluss der Verwendung Folgendes auf (die beste Lösung besteht darin, diese Methode in der onDestroy-Methode einer Aktivität aufzurufen):

wl.release();

Mehr dazu auf dieser link

1
PetarT