実践6.振動させる
振動(バイブレーション)は、PCソフトやWebサイトの開発には無いスマホアプリ開発ならではの表現方法です。
実際にAndroid端末を振動させてみましょう。
1.バイブレーション実装の準備
まず、以下のレイアウトファイルを開きます。
「app > res > layout > activity_tameshi.xml」 ボタンをドラッグ&ドロップして、画面に追加します。 このようになれば成功です。 ボタンの「id」を「tameshi_btn_vibration」に変更します。 ボタンの「text」を「vibration」に変更します。
変更したら「Text」タブに切り替えます。 切り替えるとこうなります。 「id」が「tameshi_btn_vibration」のボタンに以下を追加します。
android:onClick="onClick"
2.バイブレーションの実装
ここから、実際にバイブレーションのプログラムを書いていきましょう。
まずは、バイブレーション機能を使うアプリであることを、マニフェストファイルに記述します。
(※もし記述しなかった場合、アプリ実行時にエラーが発生します。)

「app > manifest > AndroidManifest.xml」
に、次のコードを追記しましょう。
<uses-permission android:name="android.permission.VIBRATE"/>
バイブレーションの処理を実装します。
「app > java > me.picnicapp.sample.picnicsample > TameshiActivity」。 「onClick」メソッド内のswitch文に以下のcase文を記述します。
// vibrationボタンが押された時
case R.id.tameshi_btn_vibration:
    break;
バイブレーションを行う「vibrate」メソッドを定義します。
まずは中身を書かずに枠だけ用意しましょう。
// 端末を振動させる
private void vibrate() {

}
先ほど記述したcase文から、「vibrate」メソッドを呼ぶように記述します。
vibrate();
「vibrate」メソッド内に、振動させる以下のコードを記述します。
実際にアプリを実行して動作を確認してみましょう!
(ボタンを押すと1回だけ振動します。)
// 100ms振動させる
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(100);
1度だけ振動させるのではなく、振動パターンを指定することもできます。
先ほどのコードをコメントアウトし、以下のコードを記述してみましょう。
そして、再度アプリを実行して動作を確認してみましょう!
// 100ms振動させる
// Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
// vibrator.vibrate(100);

// 振動パターンを指定する方法
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
// 「1秒停止→2秒振動→1秒停止→1秒振動→3秒停止→5秒振動」というパターン
long[] pattern = {1000, 2000, 1000, 1000, 3000, 5000}; // OFF,ON,OFF,ON…という順番で指定
// 指定のパターンで振動させる
vibrator.vibrate(pattern, -1);