Spanish Poder utilizar flash de la cámara como avisador de mensajes, etc

Gabino A.

New Member
Creo que el otro día lo vi en un Iphone y me gustó.

Cada vez que recibía un mensaje el flash destelleaba, con lo cual, aunque había bastante ruido de ambiente se daba cuenta uno de sobra de que se había recibido algo.

¿Podemos hacer algo así con B4A?
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Gabino

Si, de poder hacer se puede hacer, lo unico es que si recibes muchos mensajes la bateria la agotarás. Por otro lado hay dispositivos que puedes configurar que al recibir un mensaje, email, etc, parpadee el led multicolor, eso es algo que gasta menos bateria, por otro lado, si quieres ver el flash, tendrias que tener el movil boca abajo, ya que los moviles con flash lo tienen al lado de la cámara trasera.

Tienes que crear un servicio que capture los mensajes, y luego hacer que se encienda el flash.
La parte de captura la puedes ver aqui incluida con un ejemplo:
http://www.b4x.com/android/forum/th...-messages-without-notification.14083/#content

Parar y poner en marcha el flash lo puedes hacer asi:

B4X:
Dim flash As AdvancedCamera ' libreria ACL

' saber si el movil tiene flash, valores [off, auto, on, torch]
' emplea una variable global (FlagSoportaFlash por ejemplo) y utilizala cuando quieras cambiar el estado
If flash.SupportedFlashMode.Contains("torch")  Then FlagSoportaFlash = True

if FlagSoportaFlash then
  flash.FlashTorch ' marcha flash
  flash.FlashOff   ' paro flash
end if

Saludos
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Muchas gracias por la respuesta.

Estoy con la "fase1" que es conseguir encender y apagar el flash (torch) y ya lo he conseguido añadiendo únicamente a tus instrucciones un panel para luego poder inicializar la cámara.

B4X:
Sub Activity_Resume
    flash.Initialize(Panel1,"FlashOK")
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    flash.Release
End Sub

El "problema" con el que me he encontrado es que no consigo descargar la última versión de la librería (da error en el link correspondiente) y solo he conseguido la versión previa que no dispone del control de la existencia de flash.

El link que estoy intentando utilizar es el que aparece como BIG UPDATE del siguiente hilo:

http://www.b4x.com/android/forum/threads/advanced-camera-library-v1-00.9383/#post51922
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Si, el link que tu dices hace referencia a la version 2.0, pero ya va por la 4.6.
Si miras mas abajo de donde has cogido ese link, veras los ficheros adjuntados :D, y la ultima versión que es la 4.6 en un ZIP (acl4.6.zip)
Te adjunto una captura para que veas donde está, he probado bajarlo y funciona

Saludos
 

Attachments

  • captura.jpg
    captura.jpg
    11.4 KB · Views: 304

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Gabino

Algo importante que se me olvidó comentarte, supongo que para hacer ese parpadeo del flash haras un retraso de tiempo, no se te olvide poner en el Activity_Pause (UserClosed As Boolean) de la aplicación parar el flash, por que si el usuario o el sistema, por cualquier motivo sale antes de que se apague el flash, se te quedará encendido y entre que se de cuenta y sepa apagarlo puede gastarle mucha batería

Saludos
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Hola Gabino

Algo importante que se me olvidó comentarte, supongo que para hacer ese parpadeo del flash haras un retraso de tiempo, no se te olvide poner en el Activity_Pause (UserClosed As Boolean) de la aplicación parar el flash, por que si el usuario o el sistema, por cualquier motivo sale antes de que se apague el flash, se te quedará encendido y entre que se de cuenta y sepa apagarlo puede gastarle mucha batería

Saludos
Ya encontré el misterio.
El problema era que no me dejaba utilizar:
B4X:
If flash.SupportedFlashMode.Contains("torch")  Then FlagSoportaFlash = True

Sino que tenía que utilizar una lista intermedia:
B4X:
' saber si el movil tiene flash, valores [off, auto, on, torch]
            Dim SupportedModes As List
            SupportedModes.Initialize
            SupportedModes = flash.SupportedFlashMode
            soportaFlash = SupportedModes.IndexOf("torch") <> -1
            SupportedModes.Clear

Aprovechándome un poco más de tu buena "disposición"...

¿Podrías orientarme por donde mirar para monitorizar los eventos de llegadas de WhatsApp, Emails, Hangouts, etc para poder lanzar las intermitencias del flash?

Gracias anticipadas.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Gabino

Que yo sepa, no se puede interceptar casi nada, pero no solo en B4A, si no en Android. Puedes interceptar los SMS como te indiqué en el link de arriba, y por supuesto los emails desde POP3 con la libreria NET. Aqui puedes ver una explicacion y ejemplo:

http://www.b4x.com/android/forum/th...mmunicate-with-android-devices.11310/#content

Pero interceptar WhatsApp, Hangouts, etc, como te he dicho que yo sepa no. Aqui puedes ver la respuesta de Erel:

http://www.b4x.com/android/forum/threads/intercept-generic-notification.25196/#post-146036

Podrias leer la base de datos de WhatsApp (creo que está en SQlite), y asi puedes determinar que ha llegado un nuevo mensaje, podria ser una forma, aunque bastante compleja.

Te aconsejo que abras un nuevo Post y quizas alguien te diga algo, como no me he metido por ahora en estas cosas, lo desconozco totalmente.

Saludos
 

Gabino A. de la Gala

Well-Known Member
Licensed User
Longtime User
Hola Gabino

Que yo sepa, no se puede interceptar casi nada, pero no solo en B4A, si no en Android. Puedes interceptar los SMS como te indiqué en el link de arriba, y por supuesto los emails desde POP3 con la libreria NET. Aqui puedes ver una explicacion y ejemplo:

http://www.b4x.com/android/forum/th...mmunicate-with-android-devices.11310/#content

Pero interceptar WhatsApp, Hangouts, etc, como te he dicho que yo sepa no. Aqui puedes ver la respuesta de Erel:

http://www.b4x.com/android/forum/threads/intercept-generic-notification.25196/#post-146036

Podrias leer la base de datos de WhatsApp (creo que está en SQlite), y asi puedes determinar que ha llegado un nuevo mensaje, podria ser una forma, aunque bastante compleja.

Te aconsejo que abras un nuevo Post y quizas alguien te diga algo, como no me he metido por ahora en estas cosas, lo desconozco totalmente.

Saludos
Muchas gracias por todo.

Más que nada era por curiosidad y por hacer algo nuevo para mi. Pero veo que se complica demasiado.

De momento me conformo con la linterna ;-)
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Ya que estas con la linterna, verifica que el movil tenga flash, y cuando no tenga puedes hacer que la pantalla se ponga toda en blanco para iluminar ;), añadele una "lupa" , podras practicar con la camara, con el foco, el zoom, con el autofoco, con los problemas que da al girar el movil, poner la camara en un panel es de lo mas facil, lo complicado viene con el autofoco, el zoom... . Es una buena práctica y ademas algo util, fue una de las primeras aplicaciones que me hice cuando empecé con B4A, las linternas y lupas que encontraba tenian publicidad, y no llegaban a hacer lo que yo queria. Ahora la tengo en la primera pantalla y la empleo bastante.
Y si ya quieres rizar el rizo, cuando tengas todo eso, haz un widget que solo al pulsar cambie el estado la linterna, es facil, lo complicado es las medidas.
Para mi las mejores practicas son las utilidades que me hago de las necesidades diarias que tengo, por que ademas de aprender, te diviertes, y cuando te diviertes todo sale mejor. Bueno, y si encima te pagan por eso, ya ni te digo :D

Saludos
 
Top