Vibrar cuando se mantiene pulsado el botón
Estoy haciendo una aplicación donde el usuario mantiene presionado un botón para hacer vibrar el teléfono y no estoy seguro de cómo hacerlo tan sólo cuando el botón se mantiene pulsado vibra, mi código hasta el momento es.
package one.two.bn; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Vibrator; import android.view.View; import android.widget.Button; import android.view.View.OnClickListener; public class Vb extends Activity { /** Called when the activity is first created. */ private Button button1; private Vibrator vibrator; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); public void onClick(View v) { if(v==button1){ vibrator.vibrate(300000); } }
Si alguno puede ayudar mucho gracias.
- ¿Cómo activar la vibración en la entrada de sonido?
- ¿Cómo hacer vibrar un dispositivo Android?
- Patrón de vibración para entradas incorrectas (Android)
- Vibrar onclick
- Android: evita que la función de vibración del teléfono afecte a los datos del acelerómetro
- En Android (utilizando Java), ¿cómo puedo configurar el volumen del timbre (a un número especificado)?
- Android Vibrar en la tostada (Homer: Mmmm vibrar en la tostada)
- Android: ¿Notification.DEFAULT_VIBRATE requiere permiso de vibración?
- Cómo proporcionar vibraciones personalizadas en las llamadas entrantes específicas
- Comprobar la configuración del teléfono para la retroalimentación háptica
- Patrón de vibración predeterminado del dispositivo Android
- ¿Cómo puedo hacer vibrar mi dispositivo?
- ¿Cómo puedo hacer animación vibrante para ImageView
Prueba este código
Vibrator vibe = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE) ;
A continuación, en el OnClickListener
de su botón:
vibe.vibrate(50); // 50 is time in ms
Y no olvides que necesitas añadir el permiso al manifiesto (después de la etiqueta </application>
):
<uses-permission android:name="android.permission.VIBRATE" />
También estoy de acuerdo con Tim, porque onTouchListener
se llama antes en el clic por lo que es dar la mejor salida para su aplicación.
Si necesita la vibración de pulsación prolongada como ActionMode o ContextMenu,
view.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); return true; } });
Utilice OnTouchListener()
lugar de onClick()
.
Dentro del oyente cuando MotionEvent.getAction() == MotionEvent.ACTION_DOWN
llamará vibrator.start(some arbitrarily large number here perhaps 1 minute or more)
Y cuando getAction() == MotionEvent.ACTION_UP
llama a vibrator.cancel().
De esta manera comenzará a vibrar cuando presione hacia abajo y se detenga cuando levante.
button1.setOnClickListener(new View.OnClickListener() { [...] public void onClick(View v) { if(v==button1){ // <- Don't need that... // Do Stuff... } }});
Si utiliza una clase interna para el 'onClickListener', no es necesario comprobar si la vista es el botón, ya que sólo el botón puede activar ese método 'onClick'.
Además, si desea que el teléfono vibre siempre y cuando mantenga pulsado el botón, utilice el método 'onLongClick' .
Agregue permisos para la vibración en el archivo de manifiesto.