Spanish Encender la pantalla si está apagada/durmiendo

vecino

Well-Known Member
Licensed User
Longtime User
Hola a todos, he creado la pregunta en el foro general, pero creo que no me he dado a entender con el traductor de inglés porque nadie contesta, así que me expreso aquí en mi idioma, aunque a veces ni así me explico :D

Veamos, me han pedido una sencilla aplicación para firmas, tienen un smartphone dedicado para que el cliente firme con su dedo y se envía la imagen de la firma al servidor, nada especial.
Pero la pantalla se apaga cuando le llega el tiempo que tienen configurado... y se duerme.
Yo tengo puesto en el programa un PartialLock con el phonewakestate, y si el dispositivo está dormido/pantalla apagada entonces deslizan el dedo por la pantalla y se enciende esta, y el programa está ahí a la espera porque no usan ningún otro programa en ese dispositivo. Ni tampoco tienen ningún otro sistema de seguridad, solamente deslizar con el dedo.

Bien, voy al grano, quieren que cuando se reciba una orden de firma (se envía desde el servidor) la pantalla del dispositivo se encienda sola.
Me explico, quieren lo mismo que ocurre cuando el teléfono está dormido con la pantalla apagada y recibimos una llamada telefónica, que se "enciende" automáticamente.
Pues eso, ¿tan difícil es? porque tan sólo encuentro el phonewakestate KeepAlive(True), pero eso no enciende, lo que hace es que no se apague.
¿Qué puedo hacer?
Gracias a todos.
 

Piluso

Member
Licensed User
Buen día. Te respondo como si pensara en voz alta.
Y si buscas por el lado de cuando cambia de estado el acelerometro, emulando a cuando estando en resposo el movil y lo moves.
Ojo que a lo mejor te digo una pavada pero es lo primero que se me cruzó por la cabeza.

S2
 

vecino

Well-Known Member
Licensed User
Longtime User
Buen día. Te respondo como si pensara en voz alta.
Y si buscas por el lado de cuando cambia de estado el acelerometro, emulando a cuando estando en resposo el movil y lo moves.
Ojo que a lo mejor te digo una pavada pero es lo primero que se me cruzó por la cabeza.

S2
Gracias, ¿cómo es eso del acelerómetro?
 

Gabino A. de la Gala

Active Member
Licensed User
Longtime User
Pues yo estoy también pensando algo similar. El recibir la orden de "despertar" podría ser por sockets, o por algún otro método, pero la "pega" yo también la tengo en como despertar el teléfono...
 

vecino

Well-Known Member
Licensed User
Longtime User
... pero la "pega" yo también la tengo en como despertar el teléfono...
Ese es el único problema que tengo con esto, cómo despertar el teléfono, o al menos que salga un mensajito o algo, como hace el programa de email, el whatsapp, etc.
 

Gabino A. de la Gala

Active Member
Licensed User
Longtime User
Ese es el único problema que tengo con esto, cómo despertar el teléfono, o al menos que salga un mensajito o algo, como hace el programa de email, el whatsapp, etc.
He encontrado este hilo que quizás nos pueda servir, pero ahora mismo ando un poco pillado de tiempo para poder probarlo.
Si te sirviera para avanzar algo, ya me dices...

Un saludo.
 

José J. Aguilar

Expert
Licensed User
Hola:

Como te dice Erel en el hilo que has abierto, PhoneWakeState.KeepAlive INTENTARÁ encender tu pantalla.

You need PhoneWakeState.KeepAlive. It will (try to) turn on the screen.

He modificado el ejemplo de Network + AsyncStreams + B4XSerializator simplemente añadiendo un ph.KeepAlive, y efectivamente, si desde el programa B4J pones algo por ejemplo en Name y le das al botón Send, la pantalla se enciende sola (en mi caso, me sale la pantalla de bloqueo, pero si lo tienen desbloqueado, entiendo que directamente saldrá la pantalla de firma).
Tendrás que buscar algún sitio para poner el KeepAlive('false') para permitir que la pantalla se bloquee... y bien hacer un partialock, o poner el código en un servicio para que Android no cierre la app y reciba el mensaje (cuando dejes el teléfono mucho tiempo apagado)

saludos,
 

Attachments

  • Network.zip
    184.2 KB · Views: 20
Last edited:

vecino

Well-Known Member
Licensed User
Longtime User
Hola, sí que se enciende la pantalla, ahora toca pasar todo a un servicio para que se mantenga activo siempre el programa aunque esté apagada la pantalla.
¡¡¡Gracias!!!
 

Gabino A. de la Gala

Active Member
Licensed User
Longtime User
Hola, sí que se enciende la pantalla, ahora toca pasar todo a un servicio para que se mantenga activo siempre el programa aunque esté apagada la pantalla.
¡¡¡Gracias!!!
Pues ya me contarás, porque yo lo he instalado en mi vetusto Note 8 de Samsung y no consigo que se "ilumine" la pantalla...
 

vecino

Well-Known Member
Licensed User
Longtime User
Bueno, en principio he hecho un programita de prueba, en un servicio he añadido un timer que a los 2 minutos enciende la pantalla.
El teléfono tiene puesto que se apague en 1 minuto.
Cuando llegan los 2 minutos se enciende la pantalla.
Ah, y en el servicio le he puesto que nunca se detenga para que que el sistema no lo "mate" al cabo de un rato:
B4X:
Sub Service_Start (StartingIntent As Intent)
  'Service.StopAutomaticForeground 'Call this when the background task completes (if there is one)
  Service.AutomaticForegroundMode=Service.AUTOMATIC_FOREGROUND_ALWAYS
End Sub
Esa es la prueba que he hecho.
 

vecino

Well-Known Member
Licensed User
Longtime User
Bien, ya lo he implementado en mi programita y funciona bien.
Aunque sigo con "la mosca tras la oreja", me explico, se enciende la pantalla perfectamente pero si hay algún sistema de seguridad (deslizar, patrón, pin, huella, etc.) hay que pasar ese control y la pantalla está ahí.
Si no hay ningún control de seguridad entonces la pantalla se muestra también sin problemas.
Pero la mosca tras la oreja es ¿cómo hacen los programas de llamadas telefónicas para saltarse esos sistemas de seguridad?
Porque cuando recibimos una llamada no tenemos que hacer nada salvo aceptar la llamada o cancelarla.
 

José J. Aguilar

Expert
Licensed User
¿cómo hacen los programas de llamadas telefónicas para saltarse esos sistemas de seguridad?
Me temo que eso tendrás que preguntarlo en el foro o buscar algo de info en Android Developers, probablemente el framework de android le da algún tipo de tratamiento especial a las apps dialer, pero dudo que al resto,ya que entonces no tendría mucho sentido la pantalla de bloqueo si te la puedes saltar vía app.

De todas formas, si no tiene contraseña, podrías probar esto.
 
Last edited:

vecino

Well-Known Member
Licensed User
Longtime User
Pues sí, alguien podría crear una aplicación "fake" de llamadas para saltarse la seguridad... no sé, esto suena extraño, debe haber algo más que no nos cuentan.
No me sale nada en el enlace que has puesto: "podrías probar esto."
 

vecino

Well-Known Member
Licensed User
Longtime User
Tiene muy buena pinta ese enlace, y además es el que me ha indicado también Erel.
Parece que ese es el camino.
Muchas gracias.
 

vecino

Well-Known Member
Licensed User
Longtime User
Bueno, mi gozo en un pozo, no funciona lo de encender la pantalla en casi ningún teléfono que he probado, sólo ha funcionado en el mio :D
No hablo de esto último de saltarse la seguridad y eso, sino de simplemente encender la pantalla, aunque pida clave, pin, patrón, huella, etc.

Lo he probado en varios teléfonos de clientes y ni uno ha funcionado, no lo entiendo.
🥲
 

José J. Aguilar

Expert
Licensed User
Busca patrones comunes a ver:
El mío funcionó Samsung Galaxy A13, Android 12
En el de Gabino no: Samsung Note 8, Android ?

El tuyo y los de tus clientes?
Al final esa app va a ir en un solo teléfono siempre fijo para firmar? O en muchos distintos?
 

vecino

Well-Known Member
Licensed User
Longtime User
Va a funcionar en distintos teléfonos de clientes distintos, lo que quiera cada uno.
Los que he probado son todos, curiosamente, Xiaomei.
Menos el mio, que es un Sharp.
 

Gabino A. de la Gala

Active Member
Licensed User
Longtime User
Busca patrones comunes a ver:
El mío funcionó Samsung Galaxy A13, Android 12
En el de Gabino no: Samsung Note 8, Android ?

El tuyo y los de tus clientes?
Al final esa app va a ir en un solo teléfono siempre fijo para firmar? O en muchos distintos?
Android 9 tengo yo...
 

vecino

Well-Known Member
Licensed User
Longtime User
Vaya, es lo que me temía, que funcionara aleatoriamente en unos sí y en otros no :/
 
Top