2012-01-31 20 views
10

スクリーン上のオブジェクトに触れるとデバイスを振動させようとしています。マニフェストファイルの許可を得てAndroidはタッチで振動しますか?

Vibrator v = (Vibrator) getSystemService(getApplicationContext().VIBRATOR_SERVICE); 
v.vibrate(300);  

が、私は結果を得るように見えることはありません:私はこのコードを使用しています。 提案がありますか?また、私のハードウェアは振動をサポートしています。

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

答えて

22

これを試してみてください。 performHapticFeedbackメソッドを見てください。

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

注:このコードはテストしていません。

+0

それはうまく動作します私は間違ったウィジェットでonTouchメソッドを実装すると思いますagain.because彼らの振動コードに問題がないので確認してください。 –

+0

これは素晴らしいですが、ユーザーが指を動かし続けると、それは振動を続けます。ユーザーエクスペリエンスは良くありません。これを解決する下記の答えを参照してください。 – Mercury

14

this answerによると、あなたは余分な権限を求めずに触覚フィードバック(振動)を行うことができたManifest.xmlするには、この許可を

Button b = (Button) findViewById(R.id.button1); 
    b.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
      vb.vibrate(100); 
      return false; 
     } 
    }); 

をして追加します。

+3

私はそれをテストしました。できます。 –

+0

私はこれが弱いことがわかります。より強いタッチ振動はありますか? – santafebound

+0

優秀!正確に私が必要としたもの。どうもありがとうございました。 – DmitryKanunnikoff

0

これは、一度振動し、ユーザーは、(ユーザーがまだ彼の指を動かしたときの振動維持されません!)ビュー触れたとき:

@Override 
public boolean onTouch(View view, MotionEvent event) { 

    if(event.getAction() == MotionEvent.ACTION_DOWN) { 
     Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     v.vibrate(VIBRATE_DURATION_MS); 
    } 
    return true; 
} 

をそしてラメが言ったように、マニフェストに許可を持た:

<uses-permission android:name="android.permission.VIBRATE"/> 
関連する問題