0

ユーザーがボタンをクリックしている間、デバイスを振動させたい。ユーザーがボタンを長時間押すと、ユーザーがクリックして保持している限り、デバイスが振動します。これが私が実装したものですが、特定の期間機能します。

final Button button = (Button) findViewById(R.id.button1);

button.setOnLongClickListener(new OnLongClickListener() {   

    @Override
    public boolean onLongClick(View v) {
        if(v==button){
            Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            vb.vibrate(1000);
       }                
       return false;
    }
});
4

2 に答える 2

1

無期限に振動するには、振動パターンを使用できます。

// 0 - start immediatelly (ms to wait before vibration)
// 1000 - vibrate for 1s
// 0 - not vibrating for 0ms
long[] pattern = {0, 1000, 0};
vb.vibrate(pattern, 0);

バイブレーションは次の方法でキャンセルできます。

vb.cancel();

onTouchイベントで振動を開始-ACTION_DOWNで振動を停止ACTION_UP

編集:最終的な作業コード:

    final Button button = (Button) findViewById(R.id.button1);
    button.setOnTouchListener(new OnTouchListener() {
        Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    long[] pattern = {0, 1000, 0};
                    vb.vibrate(pattern, 0);
                    break;
                case MotionEvent.ACTION_UP:
                    vb.cancel();
                    break;
            }
            return false;
        }
    });
于 2013-06-16T21:41:02.623 に答える