diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt index c59453b..ce6b167 100644 --- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/midi/MidiPlayer.kt @@ -34,20 +34,11 @@ actual class FMediaPlayer actual constructor(val filename: String, onFinished: ( if (file.exists()) { val fis = FileInputStream(file) mediaPlayer?.setDataSource(fis.fd) - mediaPlayer?.setOnPreparedListener { mp -> - // Ici, le player est prêt sans avoir bloqué l'UI - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - val params = mp.playbackParams ?: android.media.PlaybackParams() - params.speed = 1.0f - mp.playbackParams = params - } - mp.pause() - } - mediaPlayer?.prepareAsync() mediaPlayer?.setOnCompletionListener { onFinished() } + mediaPlayer?.prepareAsync() fis.close() } } catch (e: Exception) { @@ -57,7 +48,21 @@ actual class FMediaPlayer actual constructor(val filename: String, onFinished: ( } actual fun play() { - mediaPlayer?.start() + mediaPlayer?.let { mp -> + if (!mp.isPlaying) { + // Ici, le player est prêt sans avoir bloqué l'UI + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + try { + val params = mp.playbackParams ?: android.media.PlaybackParams() + params.speed = 1.0f + mp.playbackParams = params + } catch (e: Exception) { + e.printStackTrace() + } + } + mp.start() + } + } } actual fun pause() { mediaPlayer?.pause()