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
 

josejad

Expert
Licensed User
Longtime 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
Longtime 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
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…