Spanish iniciar una APP con 3 o 4 o 5 pulsaciones del boton power?

Hola amigos, necesitaria ayuda se puede iniciar una APP con 3 o 4 o 5 pulsaciones del boton power? tal vez haciendo que la app quede en segundo plano? no se.. consulto a los que saben.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Gerardo:

Te avanzo (por lo que se) que ese boton no puedes detectarlo, es un poco raro por que existe en el KeyCode ( KeyCodes.KEYCODE_POWER ) pero si lo intentas en el Sub Activity_KeyPress , no entra al pulsar este botón se va a Pause.

Aqui Erel dice que no puedes detectarlo:
https://www.b4x.com/android/forum/threads/keycodes-keycode_power.75327/#post-556004

Cuando tenga un rato voy a intentar detectarlo con intent o algun otro método y si lo consigo te lo comento

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola de nuevo, lo he conseguido ;)

Crea un servicio, y lo pones en marcha cuando quieras detectar las pulsaciones en el boton power.
Y pon este código:

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
   Dim Broadcast As BroadCastReceiver
    Dim ContadorOff= 0 As Int
    Dim ContadorOn= 0 As Int

End Sub

Sub Service_Create
   Broadcast.Initialize("BroadcastReceiver")
End Sub

Sub Service_Start (StartingIntent As Intent)
   Broadcast.addAction("android.intent.action.SCREEN_OFF")
   Broadcast.SetPriority(2147483647)
   Broadcast.registerReceiver( "")

   Broadcast.addAction("android.intent.action.SCREEN_ON")
   Broadcast.SetPriority(2147483647)
   Broadcast.registerReceiver( "")

    
End Sub

Sub BroadcastReceiver_OnReceive (Action As String, i As Object)
    Dim i2 As Intent = i
    Dim accion = i2.Action As String
    
 
    If accion.Contains("SCREEN_OFF") Then 
        Log("Pulsado Boton power en off")
        ContadorOff = ContadorOff +1
    End If
    
    If accion.Contains("SCREEN_ON") Then 
         Log("Pulsado Boton power en on")    
         ContadorOn = ContadorOn +1
    End If
    
    
End Sub

Recuerda que cuando apagas el dispositivo el Activity se va a Pause

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola, encontré una forma mas facil que empleaba en otra aplicación :rolleyes:

B4X:
Sub Process_Globals
    'These global variables will be declared once when the application starts.
    'These variables can be accessed from all modules.
    Private pe As PhoneEvents
    Dim ContadorOff= 0 As Int
    Dim ContadorOn= 0 As Int

End Sub

Sub Service_Create
   pe.Initialize("pe")
  
     
End Sub


Sub pe_ScreenOff (Intent As Intent)

ContadorOff = ContadorOff +1
Log("Pulsado botón Power OFF")
  

End Sub

Sub pe_ScreenOn (Intent As Intent)

ContadorOn = ContadorOn +1
Log("Pulsado botón Power ON")
End Sub

Saludos
 

Descartex

Well-Known Member
Licensed User
Longtime User
Eres un crack, Jesús!!! @bgsoft
 
Jesus no entendi o no me sale, perdon, arme el servicio, pero no entiendo como hacer que el servicio lanze la aplicacion, tal vez soy muy nuevo e ignorante. :'(
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Para cargar un formulario siempre es lo mismo:

B4X:
StartActivity("NombredelActivity")

Saludos
 
Anda perfecto, modifique algunas cosas, ahora una consulta BGsoft como hago para poner el contador a 0, o que el servicio se reinicie y no siga contando despues de 2 minutos de apagago el celular.

Muchas Graciassssssss!
 
Hola

Para cargar un formulario siempre es lo mismo:

B4X:
StartActivity("NombredelActivity")

Saludos
Anda perfecto, modifique algunas cosas, ahora una consulta BGsoft como hago para poner el contador a 0, o que el servicio se reinicie y no siga contando despues de 2 minutos de apagago el celular.

Muchas Graciassssssss!
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Anda perfecto, modifique algunas cosas, ahora una consulta BGsoft como hago para poner el contador a 0, o que el servicio se reinicie y no siga contando despues de 2 minutos de apagago el celular.

Muchas Graciassssssss!

Hola Gerardo:

Las variables se ponen a cero asignando un 0 (cero) :D
Ahora mas en serio, para poner a cero esa variable seria asi:
B4X:
' si es desde el mismo módulo 
ContadorOn = 0
ContadorOff= 0

' Si lo haces desde otro módulo
NombreDelModulooServicio.ContadorOn = 0
NombreDelModulooServicio.ContadorOff = 0

Tema servicios, tendrias que pararlo y luego volverlo a llamar:

B4X:
StartService(NombreDelServicio) ‘ Llamar al Servicio

StopService(NombreDelServicio) ‘ matar el Servicio

CancelScheduledService(NombreDelServicio)  ' Para si has realizado un StartServiceAt

Seria interesante que te miraras esto:
https://www.b4x.com/android/forum/threads/b4a-tutorial-módulos-de-servicio.42689/

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Sos un genio! BGsoft! mire tu pagina en internet, impresionante la cantidad de servicios que das... felicitaciones!

Gracias Gerardo, pero tambien llevo muuuuchos años en este negocio, quizas hasta mas de los que tu tienes :rolleyes:


Saludos
 
Top