スマホを振動させる

Kotlin

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))
}
BACK