2010-02-09 14 views
30

Desidero aggiungere feedback tattile ai pulsanti della mia applicazione e controllarli a livello di codice per mostrare lo stato del pulsante (abilitato e disabilitato). Il settaggio di feedback tattile predefinito funziona solo per una pressione prolungata. Come posso farlo funzionare per semplici clic sui pulsanti.Come abilitare il feedback tattile sulla vista pulsante

E c'è un modo per avere feedback tattile su eventi come touch move?

risposta

55

Ecco una risposta, anche se potrebbe non essere la migliore realizzazione:

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 
    } 
} 

Non dimenticare, è inoltre necessario aggiungere l'autorizzazione "android.permission.VIBRATE" per manifesta del programma. Puoi farlo aggiungendo la seguente al file "AndroidManifest.xml":

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

Mi auguro che aiuta.

+0

Se si posiziona il 'this.getSystemService (VIBRATOR_SERVICE);' all'interno di onClickListener di un pulsante, quindi 'this' fa riferimento al pulsante stesso che non ha il metodo getSystemService. Utilizza invece: 'getApplicationContext(). GetSystemService (VIBRATOR_SERVICE);' –

+0

non è sempre possibile utilizzare getApplicationContext() all'interno di onClickListener – sudocoder

26

View ha una funzione performHapticFeedback, che dovrebbe consentire di eseguirla quando lo si desidera, ad esempio su un listener di OnClick.

+1

ho aggiunto il seguente codice nel metodo onClick del onClickListener, ma non ha funzionato btn_left \t \t \t \t \t .performHapticFeedback (HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); Non sono davvero sicuro di come funziona questo flag –

+1

Hai impostato il feedback tattile per abilitato? Per la documentazione: http://developer.android.com/intl/fr/reference/android/view/View.html#performHapticFeedback(int) questo è necessario per ottenere qualsiasi feedback tattile da giocare. Non sono sicuro di questa costante, hai provato a utilizzare VIRTUAL_KEY? –

+0

HapticFeedbackConstants.VIRTUAL_KEY non è disponibile. Im attualmente utilizza Android 1.5_r2 E sì, il feedback tattile è abilitato per i pulsanti nello stesso xml. Ancora senza fortuna –

70

Un esempio di Mayra è, per eseguire Haptic Feedback è utilizzare questo codice.

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

E questa riga di codice può essere facilmente inclusa nell'azione onclick. La buona parte di questo è che non è necessario impostare un permesso nel AndroidManifest (non ho bisogno di questo su SdkVersion "7" (2.1 o 2.3 è 7))

anche fare le note nel mio codice qui verrà eseguito solo se l'utilizzo abilita Feedback Haptic come globale. Vedere http://developer.android.com/reference/android/view/HapticFeedbackConstants.html per sempre usarlo.

+5

deve essere accettato per un migliore uso di API. – Ewoks

+12

Aggiungi 'android: hapticFeedbackEnabled =" true "' nel pulsante xml o utilizzare 'btn.setHapticFeedbackEnabled (true);' in codice –

Problemi correlati