[Android] 003. 触覚フィードバック(バイブレーション)

androidでバイブレーションの実装って実はやったことなかった
今やってる案件の仕様にあったような記憶だったけど、仕様書には明記されてない🤔
試してみたのでせっかくだから残しておきます

イベントに触覚フィードバックを追加する  |  Views  |  Android Developers

ちなみにOS設定の音とバイブレーション でバイブレーションとハプティクスをOFFとかにしていると動作しないので確認時注意(テスト機OFFってた😅)

<uses-permission android:name="android.permission.VIBRATE"/>
// ボタンやキーのフィードバックの場合はperformHapticFeedbackで実装がよい
val view = LocalView.current
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    view.performHapticFeedback(HapticFeedbackConstants.CONFIRM)
}
// ワンショット
val context = LocalContext.current
//val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
val vibrator = context.getSystemService(Vibrator::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    val vibrationEffect = VibrationEffect.createOneShot(100, DEFAULT_AMPLITUDE)
    vibrator.vibrate(vibrationEffect)
} else {
     vibrator.vibrate(100)
}
// VibratorManager
@SuppressLint("ServiceCast")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    val vibratorManager = context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
    // 100ms振動 / 100ms止める, 振動強度 0 - 255, 繰り返さない/繰り返す -1 / 0 配列の長さまで指定可能
    val vibrationEffect = VibrationEffect.createWaveform(longArrayOf(100L, 100L), intArrayOf(200, 0), -1)
    val combinedVibration = CombinedVibration.createParallel(vibrationEffect)
    vibratorManager.vibrate(combinedVibration)
}

Android Studio Meerkat 2024.3.1 Patch 2 built on April 16, 2025