Spanish ¿Como hacer una llamada telefonica despues de vibrar?.

Ingeniero Cognitivo

Active Member
Segun este algoritmo, mi aplicacion deberia vibrar varias veces y luego hacer una llamada pero lo hace al reves.¿Alguien tiene alguna solucion?.
¿Es posible comprobar si el movil esta vibrando para que llame solo cuando haya dejado de vibrar?.

Gracias.

Nota: Ya se que la condicion logica esta al reves. Es un prototipo.

Sub temporizador_Tick
Log("Temporizador")
vibraciones = vibraciones +1
If vibraciones > 2 Then
StartActivity(p.Call(""))
vibraciones = 0
temporizador.enabled = False
Else
Log("vibra " & vibraciones)
Vibrar.Vibrate(500)
End If
End Sub
 

Gabino A. de la Gala

Active Member
Licensed User
Longtime User
¿Porqué en lugar de utilizar un timer no haces todo el proceso en un único procedimiento "lineal"?

B4X:
Sub LlamadaVibrandoAntes()
  Vibrar.Vibrate(500)
  sleep(200)
  Vibrar.Vibrate(500)
  sleep(200)
  StartActivity(p.Call(""))   ' Entiendo que con esta llamada es con la que lanzas la marcación '
End Sub
 

Ingeniero Cognitivo

Active Member
¿Porqué en lugar de utilizar un timer no haces todo el proceso en un único procedimiento "lineal"?

B4X:
Sub LlamadaVibrandoAntes()
  Vibrar.Vibrate(500)
  sleep(200)
  Vibrar.Vibrate(500)
  sleep(200)
  StartActivity(p.Call(""))   ' Entiendo que con esta llamada es con la que lanzas la marcación '
End Sub
Lo hice pero el modulo se detenia, hacia la llamada y luego vibraba, O sea, se ejecutaba al reves y he preferido hacerlo con un temporizador para ahorrar tener que poner la instruccion de vibracion varias veces aunque ahora que lo veo, al ahorrarme poner esa instruccion varias veces, tengo que poner mas instrucciones para controlar cuando se hace la llamada asi que da igual. Segun tu ejemplo, solo he ahorrado poner varias veces sleep. Pero ya lo he solucionado con un Doevents.
 

josejad

Expert
Licensed User
Longtime User
Pero ya lo he solucionado con un Doevents

Si no me equivoco, la forma correcta de hacerlo sería con una Resumable Sub, como en este ejemplo:

B4X:
Sub Llamar
   Log("Iniciando sub Llamar")
   Vibrar
   Wait For Vibrar_Complete
   StartActivity(p.Call(""))
   Log("Llamar completada")
End Sub

Sub Vibrar
   Log("Iniciando vibración")
   For i = 0 to Numero_Vibraciones_Deseadas  
      Vibrar.Vibrate(500)
      sleep(200)
   Next
   Log("Vibracione completadas")
   CallSubDelayed(Me, "Vibrar_Complete")
End Sub

Sub temporizador_Tick
Por favor, usa etiquetas [code]... Tu código aquí.... [/code] para que los post sean más legibles.

saludos,
 
Last edited:

josejad

Expert
Licensed User
Longtime User
Pues viendo esta respuesta de Erel, parece que sería más adecuado algo como:

B4X:
Sub Llamar
   Log("Iniciando sub Llamar")
   Vibrar
   Wait For (Vibrar) Complete (Success as Boolean)
   StartActivity(p.Call(""))
   Log("Llamar completada")
End Sub

Sub Vibrar As ResumableSub
   Log("Iniciando vibración")
   For i = 0 to Numero_Vibraciones_Deseadas  
      Vibrar.Vibrate(500)
      sleep(200)
   Next
   Log("Vibracione completadas")
   Return True
End Sub
 
Top