概ねタイトル通りです。
Vibratorクラスを使ってバイブレーション機能を使ってみます。
振動する時間や繰り返しのパターンなどを設定できるみたいですね。
AndroidManifestに権限を追加する
加速度センサやSDカードを使う場合と同じように、振動機能を使う場合でも
AndroidManifest.xmlを修正する必要があります。
以下のように一行追加しましょう。
<uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.VIBRATE"></uses-permission> <application android:icon="@drawable/ic_launcher"
getSystemServiceを使いVibratorクラスのインスタンス取得
Vibratorクラスを使うには android.os.Vibrator をインポートします。
getSystemService関数を使ってインスタンスを取得します。
import android.app.Activity; import android.os.Bundle; import android.os.Vibrator; public class Sample20120630Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Vibrator vib = (Vibrator)getSystemService(VIBRATOR_SERVICE); } }
Vibratorクラスのvibrate関数でバイブレーションをさせる
バイブレーションをさせるって言葉はなんかおかしい感じがしますが、
振動させるにはVibratorクラスの vibrate関数 を使います。
逆にバイブレーションを止める場合はcancel関数を使います。
・Vibratorクラスの関数
関数名 | 機能 |
vibrate() | 引数のミリ秒間振動する |
---|---|
cancel() | 振動を止める |
vibrate関数はlong型の配列を指定すると、
振動する時間と止まる時間を組み合わせた振動パターンで設定できます。
サンプルで使用しているので参考にしてみて下さい。
サンプルプログラム
4秒間バイブレーションするボタン、
0.2秒振動、0.2秒停止、0.5秒振動のパターンでバイブレーションするボタン
バイブレーションを止めるボタンが付けてみたサンプルです。
import android.app.Activity; import android.os.Bundle; import android.os.Vibrator; import android.view.*; import android.view.View.OnClickListener; import android.widget.*; public class Sample20120630Activity extends Activity { Vibrator vib; Button btn,btn2,btn3; private long pattern[] = {200, 200, 500 }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); setContentView(ll); btn = new Button(this); btn.setText("振動はじめ"); btn2 = new Button(this); btn2.setText("パターン振動"); btn3 = new Button(this); btn3.setText("振動おわり"); ll.addView(btn); ll.addView(btn2); ll.addView(btn3); btn.setOnClickListener( new SampleClick() ); btn2.setOnClickListener( new SampleClick() ); btn3.setOnClickListener( new SampleClick() ); vib = (Vibrator)getSystemService(VIBRATOR_SERVICE); } class SampleClick implements OnClickListener{ public void onClick( View v ){ if( v == btn ){ vib.vibrate(4000);// }else if( v == btn2 ){ vib.vibrate( pattern, 0); }else if( v == btn3 ){ vib.cancel(); } } } }
【実行画面】