2010-02-09 7 views
30

Ich möchte den Schaltflächen meiner Anwendung haptisches Feedback hinzufügen und sie programmgesteuert steuern, um den Status der Schaltfläche anzuzeigen (aktiviert und deaktiviert). Der standardmäßige haptische Feedback-Setter funktioniert nur bei langen Drücken. Wie kann ich es für einfache Knopfklicks arbeiten lassen?So aktivieren Sie die haptische Rückmeldung in der Schaltflächenansicht

Und gibt es eine Möglichkeit, haptisches Feedback zu Ereignissen wie Touchmove zu geben?

Antwort

55

ist eine Antwort, obwohl es nicht die beste Umsetzung sein könnte:

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

Vergessen Sie nicht, Sie auch die „android.permission.VIBRATE“ Erlaubnis des Programms Manifest hinzufügen müssen. Sie können durch Hinzufügen der folgenden auf die „AndroidManifest.xml“ Datei so tun:

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

Ich hoffe, das hilft.

+0

Wenn Sie den 'this.getSystemService (VIBRATOR_SERVICE);' Innerhalb von onClickListener einer Schaltfläche verweist "this" auf die Schaltfläche selbst, die nicht über die Methode getSystemService verfügt. Verwenden Sie stattdessen: 'getApplicationContext(). GetSystemService (VIBRATOR_SERVICE);' –

+0

Sie können nicht immer getApplicationContext() in einem onClickListener verwenden – sudocoder

26

View verfügt über eine performHapticFeedback-Funktion, die es Ihnen ermöglichen soll, sie jederzeit auszuführen, z. B. auf einem OnClick-Listener. Hier

+1

Ich habe den folgenden Code in der OnClick-Methode des OnClickListener aber nicht btn_left \t \t \t \t \t .performHapticFeedback (HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING) funktionierte; Ich bin nicht wirklich sicher, wie diese Flagge funktioniert –

+1

Haben Sie haptisches Feedback aktiviert? Laut der Dokumentation: http://developer.android.com/intl/fr/reference/android/view/View.html#performHapticFeedback(int) ist dies notwendig, um haptisches Feedback zu erhalten. Ich bin mir über diese Konstante nicht sicher. Haben Sie versucht, VIRTUAL_KEY zu verwenden? –

+0

HapticFeedbackConstants.VIRTUAL_KEY ist nicht verfügbar. Im derzeit mit Android 1.5_r2 Und ja die haptische Rückmeldung ist für die Schaltflächen in der XML selbst aktiviert. Immer noch kein Glück –

70

Ein Beispiel für Mayra ist, für den Lauf der haptischen Feedback ist mit diesem Code.

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

Und diese Codezeile kann einfach in Sie onclick Aktion enthalten sein. Das gute Teil dabei ist, Sie keine Berechtigung in der AndroidManifest festlegen müssen (ich dies nicht brauchen auf SdkVersion „7“ (2.1 oder 2.3 ist 7))

auch tun Notizen in meinem Code hier das wird nur ausgeführt, wenn das Haptische Feedback als global aktiviert ist. Siehe http://developer.android.com/reference/android/view/HapticFeedbackConstants.html für immer verwenden Sie es.

+5

sollte akzeptieren für eine bessere Verwendung von api .. – Ewoks

+12

Fügen Sie 'android: hapticFeedbackEnabled =" true "' in Schaltfläche XML oder verwenden Sie 'btn.setHapticFeedbackEnabled (true);' in Code –