Отмена Android VibrationManager не останавливает вибрациюAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Отмена Android VibrationManager не останавливает вибрацию

Сообщение Anonymous »

У меня есть следующий код, который должен запускать и останавливать вибрацию в моем приложении:

Код: Выделить всё

fun Context.vibrate(wave: Boolean) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
(getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager).apply {
vibrate(
CombinedVibration.createParallel(makeEffect(wave)),
VibrationAttributes.Builder().setUsage(VibrationAttributes.USAGE_ALARM).build(),
)
}
} else {
@Suppress("DEPRECATION")
(getSystemService(Context.VIBRATOR_SERVICE) as Vibrator).apply {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
vibrate(makeEffect(wave))
} else {
@Suppress("DEPRECATION")
vibrate(if (wave) 1000 else 500)
}
}
}
}

@RequiresApi(Build.VERSION_CODES.O)
private fun makeEffect(wave: Boolean): VibrationEffect {
return if (wave) {
VibrationEffect.createWaveform(timeInterval, 1)
} else {
VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE)
}
}

fun Context.stopVibration(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
(getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager).apply {
cancel()
}
} else {
@Suppress("DEPRECATION")
(getSystemService(Context.VIBRATOR_SERVICE) as Vibrator).apply {
if (hasVibrator()) {
cancel()
}
}
}
}

private val timeInterval = longArrayOf(60, 120, 180, 240, 420, 480)
Проблема в том, что этот код на самом деле не останавливает вибрацию. Вместо этого вибрация продолжается, пока я не закрою приложение.
Почему она не прекращается? Как я могу это исправить?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -vibration
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»