diff --git a/app/src/main/java/com/osfans/trime/data/sound/SoundEffectManager.kt b/app/src/main/java/com/osfans/trime/data/sound/SoundEffectManager.kt index e87bc10338..9b1d9fa49c 100644 --- a/app/src/main/java/com/osfans/trime/data/sound/SoundEffectManager.kt +++ b/app/src/main/java/com/osfans/trime/data/sound/SoundEffectManager.kt @@ -56,12 +56,14 @@ object SoundEffectManager { @JvmStatic fun switchSound(name: String) { - if (getSound(name) == null) { - Timber.w("Unknown sound package name: $name") - return + getSound(name).let { + if (it == null) { + Timber.w("Unknown sound package name: $name") + return + } + currentSoundEffect = it + AppPrefs.defaultInstance().keyboard.customSoundPackage = name } - AppPrefs.defaultInstance().keyboard.customSoundPackage = name - currentSoundEffect = getSound(name)!! } fun init() { diff --git a/app/src/main/java/com/osfans/trime/ime/core/TrimeInputMethodService.kt b/app/src/main/java/com/osfans/trime/ime/core/TrimeInputMethodService.kt index 51ff99a4b9..081514fbe3 100644 --- a/app/src/main/java/com/osfans/trime/ime/core/TrimeInputMethodService.kt +++ b/app/src/main/java/com/osfans/trime/ime/core/TrimeInputMethodService.kt @@ -232,7 +232,7 @@ open class TrimeInputMethodService : LifecycleInputMethodService() { Timber.d("Running Trime.onCreate") ColorManager.init(resources.configuration) textInputManager = TextInputManager(this@TrimeInputMethodService, rime) - InputFeedbackManager.init(this@TrimeInputMethodService) + InputFeedbackManager.init() restartSystemStartTimingSync() try { for (listener in eventListeners) { @@ -465,7 +465,7 @@ open class TrimeInputMethodService : LifecycleInputMethodService() { Timber.d("onStartInputView: restarting=%s", restarting) lifecycleScope.launch(Dispatchers.Main) { rime.runOnReady { - InputFeedbackManager.loadSoundEffects() + InputFeedbackManager.loadSoundEffects(this@TrimeInputMethodService) InputFeedbackManager.resetPlayProgress() for (listener in eventListeners) { listener.onStartInputView(attribute, restarting) diff --git a/app/src/main/java/com/osfans/trime/ime/keyboard/InputFeedbackManager.kt b/app/src/main/java/com/osfans/trime/ime/keyboard/InputFeedbackManager.kt index cde1708353..acffe9454a 100644 --- a/app/src/main/java/com/osfans/trime/ime/keyboard/InputFeedbackManager.kt +++ b/app/src/main/java/com/osfans/trime/ime/keyboard/InputFeedbackManager.kt @@ -34,24 +34,24 @@ object InputFeedbackManager { private var lastPressedKeycode = 0 private val soundIds: MutableList = mutableListOf() - fun init(context: Context) { + fun init() { runCatching { - tts = TextToSpeech(context, null) - soundPool = - SoundPool.Builder() - .setMaxStreams(1) - .setAudioAttributes( - AudioAttributes.Builder() - .setLegacyStreamType(AudioManager.STREAM_SYSTEM) - .build(), - ).build() SoundEffectManager.init() }.getOrElse { Timber.w(it, "Failed to initialize InputFeedbackManager") } } - fun loadSoundEffects() { + fun loadSoundEffects(context: Context) { + tts = TextToSpeech(context, null) + soundPool = + SoundPool.Builder() + .setMaxStreams(1) + .setAudioAttributes( + AudioAttributes.Builder() + .setLegacyStreamType(AudioManager.STREAM_SYSTEM) + .build(), + ).build() SoundEffectManager.getActiveSoundFilePaths().onSuccess { path -> soundIds.clear() soundIds.addAll(path.map { soundPool?.load(it, 1) ?: 0 })