diff options
| author | JosJuice <josjuice@gmail.com> | 2026-06-27 08:18:34 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2026-07-05 10:23:12 +0200 |
| commit | f5d225691ed3bc56e2da589e7f548835bae090c9 (patch) | |
| tree | 934934caa1f7f275f5426bb0d9467e4700bc6ac6 /Source/Android | |
| parent | d8d37fdbc487d7befe324a10b3b83e5b32f3644e (diff) | |
Android: Set USAGE_MEDIA for rumble
This lets rumble work even if the user has turned off the Android
setting Sound and vibration > Vibration and haptics > Interactive
haptics > Touch feedback. Rumble can still be disabled through Dolphin's
controller bindings and through in-game settings (GameCube) or SYSCONF
(Wii).
Diffstat (limited to 'Source/Android')
| -rw-r--r-- | Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt index 71b37ff513..ceba48e4bf 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/input/model/ControllerInterface.kt @@ -4,10 +4,12 @@ package org.dolphinemu.dolphinemu.features.input.model import android.content.Context import android.hardware.input.InputManager +import android.media.AudioAttributes import android.os.Build import android.os.Handler import android.os.HandlerThread import android.os.Looper +import android.os.VibrationAttributes import android.os.VibrationEffect import android.os.Vibrator import android.os.VibratorManager @@ -180,10 +182,21 @@ object ControllerInterface { @Keep @JvmStatic private fun vibrate(vibrator: Vibrator) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - vibrator.vibrate(VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE)) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + vibrator.vibrate( + VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE), + VibrationAttributes.Builder().setUsage(VibrationAttributes.USAGE_MEDIA).build() + ) } else { - vibrator.vibrate(100) + val attributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA).build() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + vibrator.vibrate( + VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE), + attributes + ) + } else { + vibrator.vibrate(100, attributes) + } } } |
