Bei meiner Android-App möchte ich nie, dass das Telefon gesperrt oder die Hintergrundbeleuchtung ausgeschaltet wird
Wie lasse ich den Bildschirm in meiner App eingeschaltet? [duplicate]
Fügen Sie eine Codezeile nach setContentView() in onCreate() hinzu
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flag);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
-
Diese Antwort gilt pro Aktivität und ist viel besser geeignet, wenn Sie nicht möchten, dass die App die CPU weckt, weil Sie Wake Locks nicht richtig verwaltet haben.
– Ewoks
19. Juni 2013 um 13:19 Uhr
-
Wie schalten Sie dieses Flag aus?
– AlikElzin-kilaka
29. Dezember 2013 um 13:03 Uhr
-
@kilaka schalte es mit der Linie aus
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
.– anthonycr
4. Januar 2014 um 0:48 Uhr
-
@anthonycr Ich nehme an, es wird automatisch zurückgesetzt, wenn die Aktivität zerstört wird, oder?
– Android-Entwickler
19. Oktober 2016 um 20:36 Uhr
-
@androiddeveloper Ja, es wird automatisch zurückgesetzt. Siehe Hinweis im Abschnitt „Bildschirm eingeschaltet lassen“: developer.android.com/training/scheduling/wakelock.html
– Andy
28. Februar 2017 um 21:59 Uhr
Tarsem Singh
Hier gibt es bereits viele Antworten! Ich beantworte diese Frage mit zusätzlichen und zuverlässigen Lösungen:
Verwenden PowerManager.WakeLock
ist keine so zuverlässige Lösung, da die App zusätzliche Berechtigungen benötigt.
<uses-permission android:name="android.permission.WAKE_LOCK" />
Auch wenn es versehentlich die Wecksperre hält, kann es den Bildschirm eingeschaltet lassen.
Daher empfehle ich, die nicht zu verwenden PowerManager.WakeLock
Lösung. Verwenden Sie stattdessen eine der folgenden Lösungen:
Zuerst:
Wir können benutzen getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
in onCreate()
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
Sekunde:
wir können benutzen keepScreenOn
1. Umsetzung mit setKeepScreenOn()
im Java-Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
View v = getLayoutInflater().inflate(R.layout.driver_home, null);// or any View (incase generated programmatically )
v.setKeepScreenOn(true);
setContentView(v);
}
Dokumente http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Hinzufügen keepScreenOn
zum XML-Layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true" >
Dokumente http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Anmerkungen (einige nützliche Punkte):
- Das ist egal
keepScreenOn
sollte in einer Haupt-/Stamm-/Elternansicht verwendet werden. Es kann mit jeder untergeordneten Ansicht verwendet werden und funktioniert genauso wie in einer übergeordneten Ansicht. - Wichtig ist nur, dass die Sichtbarkeit des Views sichtbar sein muss. Sonst geht es nicht!
-
Ja, es sollte die richtige Antwort sein! Ich habe nach einem Beispiel für eine Implementierung von “keepScreeOn” gesucht (was ich für den besten Weg hielt), und dies ist die einzige Antwort, die es gut zeigt!
– Sergio Carneiro
23. Januar 2014 um 19:29 Uhr
-
keine Genehmigung erforderlich.
– mhdjazmati
11. Januar 2017 um 14:10 Uhr
-
v.setKeepScreenOn(true); Funktioniert wunderbar auf M SDK-Telefonen, habe Ls nicht überprüft
– CodeToLife
12. Februar 2017 um 16:05 Uhr
-
Gute Erklärung
– jyomin
17. August 2017 um 7:19 Uhr
-
Für die Sekunde Lösung, wir machen keine Schritte 1 und 2. Nur mit Schritt 2 hat mir gereicht.
– Ban-Geoengineering
1. Juli 2020 um 10:49 Uhr
Dinesh Sharma
Verwenden PowerManager.WakeLock Klasse, um dies durchzuführen. Siehe folgenden Code:
import android.os.PowerManager;
public class MyActivity extends Activity {
protected PowerManager.WakeLock mWakeLock;
/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle icicle) {
setContentView(R.layout.main);
/* This code together with the one in onDestroy()
* will make the screen be always on until this Activity gets destroyed. */
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
this.mWakeLock.acquire();
}
@Override
public void onDestroy() {
this.mWakeLock.release();
super.onDestroy();
}
}
Verwenden Sie die folgende Berechtigung in der Manifestdatei:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Hoffe das löst dein Problem… 🙂
-
Sollte das nicht drin sein
onResuem
undonPause
Die App lässt also den Bildschirm nicht eingeschaltet, wenn der Benutzer die Home-Taste drückt?– Li_W
23. September 2011 um 3:29 Uhr
-
Diese Methode ist veraltet, Sie können hier auf die Dokumentation verweisen: developer.android.com/reference/android/os/…
– Chris.Zou
16. November 2013 um 16:37 Uhr
-
Bitte entfernen Sie diese Antwort, die veraltet ist. Danke.
– Zwischenspiel
12. Januar 2015 um 14:50 Uhr
-
BITTE KEINE WAKE LOCK VERWENDEN.
– Jonathon Reinhart
4. August 2015 um 2:06 Uhr
-
@FedericoPonzi Fall 1: Wenn Sie nur SCREEN_DIM_WAKE_LOCK brauchen, nicht SCREEN_BRIGHT_WAKE_LOCK. Fall 2: Wenn Sie eine Bildschirmwachsperre benötigen, während die App eines anderen Entwicklers im Vordergrund ausgeführt wird, können Sie das Fenster dieser App nicht direkt abrufen.
– Naetmul
4. Mai 2017 um 6:13 Uhr
Zar E. Ahmer
Verwenden Sie Wakelock nicht.
It requires permission and other stuff and may cause error if you forget to set it in right time.
Am einfachsten ist es, den folgenden Code zu verwenden, wenn Sie Ihren Bildschirm eingeschaltet lassen möchten.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Eine Ergänzung zur Antwort, wenn Sie keep_Screen_on entfernen oder beenden möchten
getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
kann man auch sehen Hier..
Und the best and easiest way
.. Verwenden android:keepScreenOn="true"
im Layoutstamm Ihrer Aktivität macht dasselbe ohne zusätzlichen Code. Aber es bleibt im Keep_Scree_on State..
Es kann je nach Bedarf variieren Siehe hier
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow
ist eine für Aktivitäten definierte Methode, bei der Sie keine finden müssen View
Erste.
-
Identisch mit der Lösung von @hackbod: stackoverflow.com/a/2134602/435605
– AlikElzin-kilaka
29. Dezember 2013 um 13:16 Uhr
Hinzufügen android:keepScreenOn="true"
im XML der Aktivität(en), die Sie auf dem Bildschirm behalten möchten, ist die beste Option. Fügen Sie diese Zeile zum Hauptlayout der Aktivität(en) hinzu.
Etwas wie das
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:keepScreenOn="true">
...
</LinearLayout>
-
Identisch mit der Lösung von @hackbod: stackoverflow.com/a/2134602/435605
– AlikElzin-kilaka
29. Dezember 2013 um 13:16 Uhr
Gottschmied
Sie können einfach verwenden setKeepScreenOn()
aus der View-Klasse.
In diesem Beitrag gibt es eine bessere Lösung: stackoverflow.com/questions/4807634/disable-keep-screen-on
– Derzu
25. Februar 2012 um 5:01 Uhr
stackoverflow.com/a/16015358/1318946
– Pratik Butani
11. September 2013 um 13:32 Uhr
Diese doppelte Frage hat mehr Aufrufe erhalten, und ich denke, das liegt daran, dass eine ältere Frage verwendet wurde Gewalt Aber hier behalten
– Benutzer25
24. März 2018 um 23:06 Uhr