2013-03-03 13 views
7

Also, ich für eine lange Zeit gedacht, dass ich wusste, wie man den Bildschirm zu verhindern, gehen in den Schlafmodus, habe ich einfach diesen Code in meiner Aktivität verwendet:Bildschirm Halten Sie sich auf in Activity - funktioniert nicht mit FLAG_KEEP_SCREEN_ON

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

Allerdings merkte ich, dass dies nur funktionierte, wenn mein Handy im "Entwicklermodus" war, dh wenn das USB-Debugging (Einstellungen -> Entwickleroptionen -> USB-Debugging) aktiviert/aktiviert war. Dann stoppen die obigen Codes den Bildschirm/das Gerät tatsächlich, um in den Ruhezustand zu gehen.

Wenn dieses Debuggen nicht aktiviert ist, geht mein Bildschirm zu schlafen, als gäbe es kein Morgen. Ich verwende Android 4.04 auf meinem Gerät und

android:minSdkVersion="12" 
android:targetSdkVersion="16" 

Wer hat von diesem Problem gehört?

EDIT

Ich habe mit Commonswares Vorschlag geprüft und hinzugefügt, um die setKeepScreenOn(), um den Code, so dass es wie folgt aussieht:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
View root = findViewById(android.R.id.content); 
if (root != null) 
    root.setKeepScreenOn(true); 

Ich habe auch überprüft, so dass dieser Code tatsächlich ausgeführt, und es ist. Aber es ändert nichts ...

+0

Ill versuchen es, aber es scheint, dass die FLAG_KEEP_SCREEN_ON könnte sogar funktionieren, wenn die App „im Einsatz“ über Eclipse, aber * nicht * wenn ich die exakt gleiche Code von Google Play herunterladen. Und dennoch, jeder "draußen" im Netz sagt, dass FLAG_KEEP_SCREEN_ON funktioniert ... Ich kann nicht der einzige mit diesem Problem sein? – Ted

+0

Da ich 'FLAG_KEEP_SCREEN_ON' noch nie benutzt habe und nur' setKeepScreenOn() '(wie es einfacher ist) verwendet habe, kann ich die Wirksamkeit Ihres' FLAG_KEEP_SCREEN_ON' Codes nicht kommentieren. – CommonsWare

+0

Ok, es funktioniert auch nicht mit setKeepScreenOn(). – Ted

Antwort

1

Ich war mit demselben Problem konfrontiert, ich war mit einer Aktivität für mein Projekt und alle anderen Bildschirm sind Fragmente, dann habe ich die android:keepScreenOn="true" in der Haupttätigkeit.

Bitte versuchen Sie dies zu verwenden und lassen Sie mich wissen, wenn Sie nicht Ihr Wunschergebnis erhalten haben.

Danke.

1

Einzige Lösung, die wirklich in meiner App funktioniert, ist WakeLock in Hauptanwendungsklasse. Leider ist das SCREEN_BRIGHT_WAKE_LOCK Flag veraltet!

public class MyApp extends Application { 
    PowerManager.WakeLock screenOnWakeLock; 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
     wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"ScreenlockTag"); 
     wakeLock.acquire(); 
    } 

    @Override 
    public void onTerminate() 
    { 
     if (screenOnWakeLock != null && screenOnWakeLock.isHeld()) 
      screenOnWakeLock.release(); 
     super.onTerminate(); 
    } 
}