アプリケーションのボタンに触覚フィードバックを追加し、プログラムで制御してボタンの状態 (有効および無効) を表示したいと考えています。デフォルトのハプティック フィードバック セッターは、長押しに対してのみ機能します。簡単なボタンクリックで機能させるにはどうすればよいですか。
また、タッチ ムーブなどのイベントで触覚フィードバックを得る方法はありますか?
2019年12月24日の更新:
ビューは、次の方法で触覚機能を有効にする必要があります。
android:hapticFeedbackEnabled="true"
xmlで追加します。またはview.setHapticFeedbackEnabled(true);
コードで使用する
(Ivan Chauから引用)
ただし、考慮すべきもう1つのことは、仮想デバイスで触覚設定を有効にすることです。これは時々煩わしいので、いくつかのフラグが役立ちます(これらの有効化設定を何らかの形で無視します):
view.performHapticFeedback(
HapticFeedbackConstants.VIRTUAL_KEY,
HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING // Ignore device's setting. Otherwise, you can use FLAG_IGNORE_VIEW_SETTING to ignore view's setting.
);
Mayraの例は、Haptic Feedbackを実行するために、このコードを使用することです。
View view = findViewById(...)
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
そして、このコード行は、onclickアクションに簡単に含めることができます。これの良いところは、AndroidManifestで権限を設定する必要がないことです(SdkVersion "7"ではこれは必要ありません(2.1または2.3は7です))
また、ここの私のコードでは、ユーザーがハプティックフィードバックをグローバルとして有効にしている場合にのみ実行されることに注意してください。常に使用する場合は、 http: //developer.android.com/reference/android/view/HapticFeedbackConstants.htmlを参照してください。
これが最良の実装ではないかもしれませんが、答えは次のとおりです。
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
}
}
プログラムのマニフェストに「android.permission.VIBRATE」権限も追加する必要があることを忘れないでください。これを行うには、「AndroidManifest.xml」ファイルに次を追加します。
<uses-permission android:name="android.permission.VIBRATE"/>
それが役立つことを願っています。
ビューには performHapticFeedback 関数があり、必要なときにいつでも、つまり OnClick リスナーで実行できるようにする必要があります。