tilt-shift-camera/app/src/main/java/no/naiv/tiltshift/util/HapticFeedback.kt

55 lines
1.5 KiB
Kotlin
Raw Normal View History

package no.naiv.tiltshift.util
import android.content.Context
import android.os.VibrationEffect
import android.os.VibratorManager
/**
* Provides haptic feedback for user interactions.
*/
class HapticFeedback(private val context: Context) {
private val vibrator by lazy {
val vibratorManager = context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
vibratorManager.defaultVibrator
}
/**
* Light tick for UI feedback (button press, slider change).
*/
fun tick() {
vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_TICK))
}
/**
* Click feedback for confirmations.
*/
fun click() {
vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK))
}
/**
* Heavy click for important actions (photo capture).
*/
fun heavyClick() {
vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_HEAVY_CLICK))
}
/**
* Success feedback pattern.
*/
fun success() {
val timings = longArrayOf(0, 30, 50, 30)
val amplitudes = intArrayOf(0, 100, 0, 200)
vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, -1))
}
/**
* Error feedback pattern.
*/
fun error() {
val timings = longArrayOf(0, 50, 30, 50, 30, 50)
val amplitudes = intArrayOf(0, 150, 0, 150, 0, 150)
vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, -1))
}
}