Dies erfordert, dass Sie Ihrer App eine zusätzliche Berechtigung erteilen. Es ist sehr einfach, Fehler einzuführen, bei denen Sie versehentlich die Wecksperre gedrückt halten und den Bildschirm eingeschaltet lassen.
Es ist weitaus besser, die Fensterflagge zu verwenden FLAG_KEEP_SCREEN_ON, die Sie im Fenster Ihrer Aktivität onCreate()wie folgt aktivieren können :
Dadurch wird sichergestellt, dass der Bildschirm eingeschaltet bleibt, während sich Ihr Fenster im Vordergrund befindet, und nur, wenn es sich im Vordergrund befindet. Dies vereinfacht diesen allgemeinen Anwendungsfall erheblich und eliminiert jegliches Jonglieren, das Sie beim Übergang Ihrer App zwischen Status ausführen müssen.
Verhindert das, dass das Gerät schläft? Wenn ja, erscheint mir die Gemeinsamkeit von WAKE_LOCK als schockierender Fehler!
Michael Cramer
32
Ja, der Bildschirm bleibt eingeschaltet und das Gerät kann nicht in den Ruhezustand versetzt werden.
Hackbod
1
Ja, Sie können das Flag mit der entsprechenden Fenster-API entfernen. Sie müssen sich keine Sorgen machen, dass etwas gezeichnet wird. Das Framework erledigt dies bei Bedarf.
Hackbod
1
@hakbod: Dies würde funktionieren, um den Bildschirm am Leben zu erhalten, aber was ist mit dem Bildschirm, der schläft, würde er ihn aufwecken und am Leben erhalten ????
Kavitha
5
@ KC202 Sie können WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON verwenden, um den Bildschirm einzuschalten, wenn Ihr Fenster angezeigt wird. Wird auch häufig mit FLAG_DISMISS_KEYGUARD und / oder FLAG_SHOW_WHEN_LOCKED verwendet.
Hackbod
34
Diese Frage hat bereits eine großartige Antwort von @hackbod!
Ich beantworte diese Frage mit zwei zusätzlichen Lösungen!
1.implementation mitsetKeepScreenOn() in java code
@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// or any View (in case generated programmatically ) View v = getLayoutInflater().inflate(R.layout.driver_home,null);
v.setKeepScreenOn(true);
setContentView(v);}
1. Es spielt keine Rolle, dass keepScreenOnes verwendet werden soll. Main/Root/Parent ViewEs kann mit jedem child viewWillen verwendet werden, der genauso funktioniert wie inParent view
2. Die einzige Sache ist, dass es View's Visibility must be visiblesonst nicht funktioniert!
note v.setKeepScreenOn(true);scheint der einzige Weg zu sein, dies für ein Vollbild-Dialogfragment zu tun
Tim
16
Eine andere Lösung ist das Hinzufügen android:keepScreenOn="true"( Dokumentation) ) , um die Ansichten, die den Bildschirm auf halten müssen.
Ermöglicht eine etwas genauere Steuerung, welche Ansichten aktiviert bleiben und welche nicht. Auf diese Weise können Sie sogar auf eine Einstellung aus einer Ressourcendatei verweisen.
Antworten:
BITTE VERWENDEN SIE KEIN WAKE LOCK
Dies erfordert, dass Sie Ihrer App eine zusätzliche Berechtigung erteilen. Es ist sehr einfach, Fehler einzuführen, bei denen Sie versehentlich die Wecksperre gedrückt halten und den Bildschirm eingeschaltet lassen.
Es ist weitaus besser, die Fensterflagge zu verwenden
FLAG_KEEP_SCREEN_ON
, die Sie im Fenster Ihrer AktivitätonCreate()
wie folgt aktivieren können :Dadurch wird sichergestellt, dass der Bildschirm eingeschaltet bleibt, während sich Ihr Fenster im Vordergrund befindet, und nur, wenn es sich im Vordergrund befindet. Dies vereinfacht diesen allgemeinen Anwendungsfall erheblich und eliminiert jegliches Jonglieren, das Sie beim Übergang Ihrer App zwischen Status ausführen müssen.
quelle
Diese Frage hat bereits eine großartige Antwort von @hackbod!
Ich beantworte diese Frage mit zwei zusätzlichen Lösungen!
Bestehende Lösung:
Zusätzliche Lösungen:
wir können benutzen
keepScreenOn
1.
implementation
mitsetKeepScreenOn() in java code
Dokumente http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Hinzufügen
keepScreenOn
zuxml layout
Dokumente http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Hinweis (einige nützliche Punkte):
1. Es spielt keine Rolle, dass
keepScreenOn
es verwendet werden soll.Main/Root/Parent View
Es kann mit jedemchild view
Willen verwendet werden, der genauso funktioniert wie inParent view
2. Die einzige Sache ist, dass es
View's Visibility must be visible
sonst nicht funktioniert!quelle
v.setKeepScreenOn(true);
scheint der einzige Weg zu sein, dies für ein Vollbild-Dialogfragment zu tunEine andere Lösung ist das Hinzufügen
android:keepScreenOn="true"
( Dokumentation) ) , um die Ansichten, die den Bildschirm auf halten müssen.Ermöglicht eine etwas genauere Steuerung, welche Ansichten aktiviert bleiben und welche nicht. Auf diese Weise können Sie sogar auf eine Einstellung aus einer Ressourcendatei verweisen.
quelle