Spanish Como configurar los botones físicos

Kevin535

New Member
Hola

necesito saber como puedo configurar el botón de volumen que al presionarlo 5 veces o mas me active una función mientras un servicio esta activado, si el servicio no esta activado tenga su función normal
en Android

gracias
 

José J. Aguilar

Well-Known Member
Licensed User
Hola:

Haz pruebas con:
B4X:
Sub Activity_KeyPress (KeyCode As Int) As Boolean 'Return True to consume the event
    If KeyCode = KeyCodes.KEYCODE_VOLUME_UP Then
        If ServicioActivo Then
           Haz cosas aquí...
        End If
    End If
End Sub
Prueba a usar un contador para cada pulsación, y alguna marca de tiempo para ver si las pulsaciones son consecutivas y si no resetar el contador o algo así...
 

Kevin535

New Member
Si quiero que se active cuando se presione 5 veces en un lapso de 7 segundos máximo como se pondría?
 

bgsoft

Well-Known Member
Licensed User
Hola

Puedes hacerlo asi:
B4X:
Sub Globals
   Dim ContadorBotonVolumen = 0 As Int
   Dim Tiempo = 0 As Long
   Dim ServicioActivo = True As Boolean ' lo puse asi para hacer pruebas
'''''''''''''''''''
'''''''''''''''''''
'''''''''''''''''''

Sub activity_KeyUp (KeyCode As Int) As Boolean
 
   Dim TiempoTranscurridoSegundos As Long

  TiempoTranscurridoSegundos = (DateTime.Now-Tiempo)/DateTime.TicksPerSecond
 
   ' por si se entra pasado mucho tiempo
   If TiempoTranscurridoSegundos > 7  Then ContadorBotonVolumen = 0
 
    If KeyCode = KeyCodes.KEYCODE_VOLUME_UP Then
       If ServicioActivo Then
               If ContadorBotonVolumen = 0 Then Tiempo= DateTime.Now
               TiempoTranscurridoSegundos = (DateTime.Now-Tiempo)/DateTime.TicksPerSecond
               ContadorBotonVolumen = ContadorBotonVolumen +1
               Log("Contador " & ContadorBotonVolumen & " Segundos " & TiempoTranscurridoSegundos) ' es solo para ver la evolución
               If TiempoTranscurridoSegundos <=7  Then
                   If ContadorBotonVolumen = 5 Then
                     LogColor("Llegó a 5 en su tiempo", Colors.Blue)
                       ContadorBotonVolumen = 0
                       ' ******* aqui pones el código que quieras *******
                   End If
               Else
                   ' se superó el tiempo
                 ContadorBotonVolumen = 0  
           End If
           Else
               ' si el servicio está parado se resetea
               ContadorBotonVolumen = 0  
           End If
           Return True
       Else
           ' si quieres que al pulsar otra tecla se resetee el tiempo y el contador ponlo aqui
        
           Return True
 
       End If

 
 
End Sub
El código lo puedes hacer mas corto, lo puse asi para que se vea mas claro

Saludos
 
Top