Android

【Android】バイブレーション機能を使ったサンプルアプリ

バイブレーション機能を使ったアプリを作ってみたいと思ったので、
調べてみました。

説明

permission設定

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

バイブレーションの生成

 vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

バイブレーションの停止
これをしなければリピート処理をする時に止まらないので、アンインストールしなければなりません。

vibrator.cancel();

端末にバイブレーション機能があるかチェックする

vibrator.hasVibrator()

バイブレーションの設定
シンプルにパターンも決めずバイブする時間を設定の場合は下記です。
ミリ秒単位で設定するので、下記は10秒バイブします。

vibrator.vibrate(10000);

パターンを決める場合は下記です。
この方法はリピート設定もできます。
設定方法は、待機時間、バイブ時間の順に設定していきます。

long vibratePattern[] = {1000,3000,2000,5000};
vibrator.vibrate(vibratePattern,-1); // ここの-1を1にするとリピートします。

この設定だと1秒待機、3秒バイブ、2秒待機、5秒バイブになりますね。

サンプル

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/button2"
        android:text="ボタン1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="ボタン2" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_toRightOf="@+id/button2"
        android:text="ボタン3" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private Vibrator vibrator;
    private Button button1;
    private Button button2;
    private Button button3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(vibrator.hasVibrator()) {
                    vibrator.vibrate(1000);
                }
            }
        });

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(vibrator.hasVibrator()) {
                    long vibratePattern[] = {100,500,100,300};
                    vibrator.vibrate(vibratePattern,-1);
                }
            }
        });

        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(vibrator.hasVibrator()) {
                    long vibratePattern[] =  {1000,1000,1000,1500};
                    vibrator.vibrate(vibratePattern,1);
                }
            }
        });
    }

    @Override
    protected void onStop() {
        super.onStop();
        vibrator.cancel();
    }
}

サンプルのスクリーンショットです。
バイブは表現できないので、コードをコピーして実機で試してみてください。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です