ほぼ全てのスマホやタブレットには振動でユーザに通知する機能が備わっている。
それをプログラミングで制御する方法を簡単に記す。
まず、Androidで振動機能を使用するにはマニフェストファイルに権限を追加しておかなければならない。
<uses-permissionandroid:name="android.permission.VIBRATE"/>
これがないとVibratorクラスのインスタンスを取得しようとした瞬間に「権限がない」と怒られる。
先に名前が出てしまったが、振動機能を司るのがVibratorクラスだ。
使い方は以下の通り
Vibrator vibrator; //バイブレーターオブジェクト private long vibPatter[]={200,1000}; //バイブレーションパターン vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE); //バイブレーション起動 vibrator.vibrate(vibPatter,1); //←第二引数はパターンの繰り返し回数(ゼロの時は無限)
基本的にgetSystemService(VIBRATOR_SERVICE)でシステムからVibratorのインスタンスを取得し、vibrate()メソッドで振動を実行する。
上の例では省略してあるがgetSystemService()はContextクラスのメソッドなので、Activity以外のクラスでViblaterのインスタンスを取得するには、コンストラクタの引数などからContextを取得しておく必要がある。
どんなふうに振動させるかは、long型の整数配列で定義する。バイブレーションパターンを{休止、振動、休止、振動・・・・・}とミリ秒単位で記述すればよい。
繰り返し回数を0(無限)にしたときはどこかのタイミングでcancel()メソッドで振動を止めなければならない。でないとアプリが終了しても振動しっぱなしになってしまう。
vibrator.cancel(); //振動停止
一回だけ振動させたい場合は、パターンを定義せずに引数が一つだけのvibrate()メソッドを呼び出せばよい。
vibrator.vibrate(1000); //1000ミリ秒間(1秒)一回振動