2011-08-25 10 views
5

No puedo apagar la pantalla con este código. Usé el método PowerManager y wl.release(), pero no funciona. ¿Alguien puede mostrarme un ejemplo?Android Desactivar pantalla

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen"); 

Esto es parte de mi función:

stateString = "nextone"; 
    if(stateString=="nextone"){   
    wl.release(); 
    } 

También he añadido el permiso en el manifiesto, pero sin resultado.

+1

Bueno, su comparación con stateString nunca habrá verdadera. Para comparar cadenas en Java, debe usar 'stateString.equals (" nextone ")' en su lugar. – Eloff

Respuesta

0

Si no usa un permiso, el programa se bloqueará con un SecurityException cuando intente bloquear, por lo que ese no es el problema. El método correcto es: (obtiene WakeLock en el arranque, lo abandona cuando la aplicación pierde el foco (onPause)

//declared globally so both functions can access this 
public PowerManager.WakeLock wl; 

///////////onCreate 
//stop phone from sleeping 
PowerManager powman = (PowerManager) getSystemService(Context.POWER_SERVICE); 
wl = powman.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "NameOfLock"); 
wl.acquire(); 

///////////onPause 
wl.release(); 

//////////for completion's sake, onResume 
if(!wl.isHeld()){ 
    wl.acquire(); 
} 

Sin embargo, el problema es en realidad en esta comprobación

if(stateString=="nextone")

Esto debería ser if(stateString.equals("nextone"))

0

por favor revise este enlace antes de continuar con el bloqueo de activación. Si no resuelve su problema, entonces puede continuar con el bloqueo por activación.

Force Screen On

2

he encontrado la respuesta aquí en desbordamiento de pila: Turn off screen on Android

copiado de allí:

WindowManager.LayoutParams params = getWindow().getAttributes(); 
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON; 
params.screenBrightness = 0; 
getWindow().setAttributes(params); 

He intentado esto y parece que funciona.

+0

esto resuelve el problema: getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); – ademar111190

+0

Este código funciona bien para apagar la pantalla, pero ¿cómo volverla a encender? – astuter

+0

Configurando params.screenBrightness a un valor entre 0 y 1 le da brillo entre 0% y 100%. Establecerlo en un valor negativo le da brillo automático. Olvidé dónde vi esto por primera vez, pero lo uso todo el tiempo. – Gdalya

0

Puede utilizar

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