Android: apaga la pantalla sin activar la pantalla de suspensión / bloqueo – Activar con pantalla táctil

He estado tratando de encontrar una forma de apagar la pantalla, y despertar desde el usuario toque la pantalla táctil.
El dispositivo se encuentra en un entorno incrustado en el que el dispositivo es una tableta y el usuario no tiene acceso a nada excepto a la pantalla táctil (sin botones).

Está conectado a la energía así que la batería no será un problema, pero cuando no detecto ninguna actividad que quiero apagar la pantalla así que no los está mirando en la cara todo el día y no reduce la vida la luz de fondo del LCD .

Mantengo un wakelock permanentemente y decido cuándo dormirme.

El problema es que cuando apago la pantalla usando:

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

La actividad se detiene y se detiene. Y la unidad no responde a un toque para despertarlo. Debe presionar el botón de encendido. En ese punto se muestra la "diapositiva para desbloquear".

Quiero apagar la pantalla, y luego seguir corriendo para poder detectar un evento de pantalla táctil y volver a encender la pantalla.

También intenté dar vuelta a la exhibición a un brillo de 0.1, que trabaja en algunos dispositivos, pero el dispositivo que necesito para trabajar encendido, "dims" solamente la exhibición.

También he intentado esto:

 // First Remove my FULL wakelock //then aquire a partial wake lock (which should turn off the display) PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag"); wl.acquire(); 

Sin embargo este método no apaga la pantalla.

Finalmente lo deduje. Espero eso ayude. 🙂

  • Obtener una instancia de WindowManager.

    WindowManager windowManager = (WindowManager) Class.forName("android.view.WindowManagerImpl").getMethod("getDefault", new Class[0]).invoke(null, new Object[0]);

  • Crear un diseño de pantalla completa xml (parámetros de diseño establecidos en fill_parent )

  • Configure su vista como no se puede hacer clic, no se puede enfocar, no se puede hacer clic largo, etc. para que el toque se pase a través de su aplicación y la aplicación pueda detectarla.

    view.setFocusable(false);
    view.setClickable(false);
    view.setKeepScreenOn(false);
    view.setLongClickable(false);
    view.setFocusableInTouchMode(false);

  • Cree un parámetro de diseño del tipo android.view.WindowManager.LayoutParams . LayoutParams layoutParams = new LayoutParams();

  • Establecer parámetro de diseño como altura, ancho, etc

     layoutParams.height = LayoutParams.FILL_PARENT; layoutParams.width = LayoutParams.FILL_PARENT; layoutParams.flags = 280; // You can try LayoutParams.FLAG_FULLSCREEN too layoutParams.format = PixelFormat.TRANSLUCENT; // You can try different formats layoutParams.windowAnimations = android.R.style.Animation_Toast; // You can use only animations that the system to can access layoutParams.type = LayoutParams.TYPE_SYSTEM_OVERLAY; layoutParams.gravity = Gravity.BOTTOM; layoutParams.x = 0; layoutParams.y = 0; layoutParams.verticalWeight = 1.0F; layoutParams.horizontalWeight = 1.0F; layoutParams.verticalMargin = 0.0F; layoutParams.horizontalMargin = 0.0F; 
  • Paso clave: Puede definir el porcentaje de brillo que necesita. view.setBackgroundDrawable(getBackgroundDrawable(i));

     private Drawable getBackgroundDrawable(int i) { int j = 255 - (int) Math.round(255D * Math.exp(4D * ((double) i / 100D) - 4D)); return new ColorDrawable(Color.argb(j, 0, 0, 0));} 
  • Finalmente agregue vista a windowManager que creó anteriormente.

    windowManager.addView(view, layoutParams);

Nota: Necesita el permiso SYSTEM_ALERT_WINDOW para colocar una superposición en la pantalla.

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

Han probado esto y funciona. Avísame si te quedas atascado.

Si usted tiene servicios usar el bloqueo de la estela pero si usted lo está haciendo del lado de la actividad su mejor idea utilizar las banderas para adquirir la bandera.

  getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // For keeping screen on // You can blur screen or dim screen using following flags // FLAG_BLUR_BEHIND - Blur screen // FLAG_DIM_BEHIND - Dim Behind 

Puede borrar estas banderas e imponer otras banderas a la pantalla tenue o desenfoque. GetWindow (). ClearFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Espero que esto solucione su problema. Opcionalmente Explore otras banderas desde http://developer.android.com/reference/android/view/Window.html

Hay una más Fyi .. Calling API ocultos en Android para desactivar la pantalla

No sé si eso le ayuda pero usted podría utilizar simplemente un bloqueo de la estela de modo que su scren continúe y exhiba una visión de la imagen que exhiba una imagen negra

Usted puede hacer una cosa que es Adquirir Parcial Wakelock y apagar la pantalla usando:

 PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag"); wl.acquire(); WindowManager.LayoutParams params = getWindow().getAttributes(); params.screenBrightness = 0; getWindow().setAttributes(params); 

@NebulaSleuth

Así que, ha sido un tiempo, cualquier progreso?

Si todavía estás en ello: ¿por qué no atornillar botones y pantallas táctiles, tal vez conectar wake-up a giroscopio?

Esperaba utilizar algo como esto al menos para los teléfonos con botones y descargar el despertador a las teclas de control de volumen o el giroscopio …

  • conexión a internet en pausa después de bloqueo de teléfono android
  • WakeLock finalizó mientras seguía teniendo error aunque lo estoy lanzando
  • Actualizaciones de ubicación de fondo android y wakelock
  • BroadcastReceiver, Servicio y Wakelock
  • WakeLock finalizado mientras se mantiene
  • Servicio, WakeLock
  • Iluminar la pantalla cuando la notificación recibió android
  • Programación de Android: GCMIntentService Stuck at WakeLock
  • ¿Cómo puedo ver qué wakelocks están activos?
  • Cómo mantener el dispositivo Android de dormir mientras está conectado
  • ¿Cuándo Android parará su cpu sin el bloqueo de la estela?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.