バイブレーション機能を使ったアプリを作ってみたいと思ったので、
調べてみました。
説明
・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();
}
}
サンプルのスクリーンショットです。
バイブは表現できないので、コードをコピーして実機で試してみてください。
以上です。