vibration update

This commit is contained in:
2026-05-02 18:13:37 +07:00
parent 6de8968f11
commit 031a1f3075
@@ -250,33 +250,42 @@ class TunVpnService : VpnService() {
}
private fun triggerVibration(isAscending: Boolean) {
val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val vibratorManager = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
vibratorManager.defaultVibrator
} else {
@Suppress("DEPRECATION")
getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
}
if (!vibrator.hasVibrator()) return
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val timings: LongArray
val amplitudes: IntArray
if (isAscending) {
timings = longArrayOf(0, 30, 40, 40, 30, 50, 20, 70)
amplitudes = intArrayOf(0, 40, 0, 80, 0, 150, 0, 255)
try {
val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
val vm = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
vm.defaultVibrator
} else {
timings = longArrayOf(0, 50, 30, 30, 40, 20)
amplitudes = intArrayOf(0, 255, 0, 100, 0, 30)
@Suppress("DEPRECATION")
getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
}
val effect = VibrationEffect.createWaveform(timings, amplitudes, -1)
vibrator.vibrate(effect)
} else {
@Suppress("DEPRECATION")
vibrator.vibrate(if (isAscending) 1200L else 300L)
if (!vibrator.hasVibrator()) return
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val timings: LongArray
val amplitudes: IntArray
if (isAscending) {
// УВЕЛИЧЕННЫЕ ТАЙМИНГИ ДЛЯ СЯОМИ
// Делаем 4 мощных нарастающих рывка, суммарно на ~1.5 секунды
timings = longArrayOf(0, 200, 150, 300, 150, 400, 100, 500)
amplitudes = intArrayOf(0, 60, 0, 120, 0, 180, 0, 255)
} else {
// Резкий стоп
timings = longArrayOf(0, 150, 100, 50)
amplitudes = intArrayOf(0, 255, 0, 80)
}
val effect = VibrationEffect.createWaveform(timings, amplitudes, -1)
vibrator.vibrate(effect)
} else {
// Это сработает только на Android 7 и ниже
@Suppress("DEPRECATION")
vibrator.vibrate(if (isAscending) 1500L else 200L)
}
} catch (e: Exception) {
Log.e(TAG, "Vibration error", e)
}
}