スマホを振動させる
AndroidManifest.xml
<uses-permission android:name="android.permission.VIBRATE" />
振動させるための許可を与えます
HomeActivity.kt
val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val vibratorManager = getSystemServce(vibratorManager::class.java)
vibratorManager.defaultVibrator
} else {
@Suppress("DEPRECATION")
getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
}
// Android8.0(API26)以上の端末ではVibrationEffect.createOneShot()を使って、振動の強さを指定できます
// VibrationEffect.DEFAULT_AMPLITUDEで振動が最大になります
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
vibrator.vibrate(VibrationEffect.createOneShot(1000, VibrationEffect.DEFAULT_AMPLITUDE))
} else {
@Suppress("DEPRECATION")
vibrator.vibrate(longArrayOf(0,1000), -1)
}
振動を繰り返す場合
VibrationEffect.createOneShotでは振動が1回しか発生しないので、VibrationiEffect.createWaveformを使います
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val timings = longArrayOf(0, 500, 100, 500, 100, 500) // 500ms振動→100ms停止を3回繰り返します
val amplitudes = intArrayOf(0, 255, 0, 255, 0, 255) // 最大強度255
// 最後の引数の-1はこのArrayを1回だけ実行するという意味です
vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, -1))
}