【Android】Vibratorクラスを使ってバイブレーションさせる方法


概ねタイトル通りです。
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();
    		}
    	}
    }

}



【実行画面】
Vibratorクラスを使ってバイブレーションさせるサンプルプログラム


関連記事

コメントは受け付けていません。