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.

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.

  • Vibración en Xamarin Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.