2010-02-09 19 views
30

Quiero agregar retroalimentación háptica a los botones de mi aplicación y controlarlos programáticamente para mostrar el estado del botón (activado y desactivado). El ajustador de retroalimentación táctil háptico funciona solo para pulsación larga. ¿Cómo puedo hacer que funcione para clics de botón simples?Cómo habilitar la retroalimentación háptica en la vista de botón

¿Y hay alguna manera de tener retroalimentación táctil sobre eventos como tocar movimiento?

Respuesta

55

Aquí es una respuesta, aunque podría no ser la mejor aplicación:

import android.view.View; 
import android.os.Vibrator; 

public class Main extends Activity implements OnClickListener 
{ 
    private View myView; 
    private Vibrator myVib; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     myVib = (Vibrator) this.getSystemService(VIBRATOR_SERVICE); 

     //myView can be any type of view, button, etc. 
     myView = (View) this.findViewById(R.id.myView); 
     myView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) 
    { 
     myVib.vibrate(50); 
     //add whatever you want after this 
    } 
} 

No se olvide, también hay que agregar el permiso "android.permission.VIBRATE" al manifiesto del programa. Puede hacerlo añadiendo lo siguiente al archivo "AndroidManifest.xml":

<uses-permission android:name="android.permission.VIBRATE"></uses-permission> 

Espero que ayude.

+0

Si coloca el 'this.getSystemService (VIBRATOR_SERVICE);' dentro de un botón onClickListener, entonces 'this' se refiere al botón en sí que no tiene el método getSystemService. Use esto en su lugar: 'getApplicationContext(). GetSystemService (VIBRATOR_SERVICE);' –

+0

no siempre se puede usar getApplicationContext() dentro de un onClickListener – sudocoder

26

La vista tiene una función performHapticFeedback, que debería permitirle realizarla siempre que lo desee, es decir, en un detector OnClick.

+1

I añade el código siguiente en el método onClick del OnClickListener pero no funcionó btn_left \t \t \t \t \t .performHapticFeedback (HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); Im no está muy seguro de cómo funciona esta bandera –

+1

¿Ha establecido la retroalimentación háptica habilitada? Según la documentación: http://developer.android.com/intl/fr/reference/android/view/View.html#performHapticFeedback(int) esto es necesario para obtener retroalimentación háptica. No estoy seguro de esa constante, ¿has intentado usar VIRTUAL_KEY? –

+0

HapticFeedbackConstants.VIRTUAL_KEY no está disponible. Actualmente estoy usando Android 1.5_r2 Y sí, la retroalimentación háptica está habilitada para los botones en el propio xml. Todavía no hubo suerte –

70

Un ejemplo para Mayra es que, para ejecutar Haptic Feedback, utilice este código.

View view = findViewById(...) 
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); 

Y esta línea de código se puede incluir fácilmente en su acción onclick. La parte buena de esto es que no es necesario fijar un permiso en el AndroidManifest (no necesito esto en SdkVersion "7" (2.1 o 2.3 es 7))

También hacer notas en mi código aquí esta se ejecutará solo si el uso permite Haptic Feedback como global. Ver http://developer.android.com/reference/android/view/HapticFeedbackConstants.html para siempre usarlo.

+5

debe aceptar para un mejor uso de api .. – Ewoks

+12

Añadir 'android: hapticFeedbackEnabled =" true "' en el botón xml o usar 'btn.setHapticFeedbackEnabled (true);' en código –

Cuestiones relacionadas