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
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
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
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
 
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. :'(
 
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
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
 
Top