new: implement web audio player with support for js and wasmJs platforms

This commit is contained in:
2026-06-16 17:55:49 +02:00
parent 1de2d43b3b
commit 8fb8ea24cf
9 changed files with 65 additions and 58 deletions
@@ -1,23 +0,0 @@
package fr.ajaury.gwenedeg.player
class JsAudioPlayer : AudioPlayer {
override fun play() {
TODO("Not yet implemented")
}
override fun pause() {
TODO("Not yet implemented")
}
override fun stop() {
TODO("Not yet implemented")
}
override fun release() {
TODO("Not yet implemented")
}
override fun load(uri: String) {
TODO("Not yet implemented")
}
}
@@ -1,6 +0,0 @@
package fr.ajaury.gwenedeg.player.di
import org.koin.core.module.Module
actual val audioPlayerModule: Module
get() = TODO("Not yet implemented")
@@ -1,23 +0,0 @@
package fr.ajaury.gwenedeg.player
class WasmAudioPlayer : AudioPlayer {
override fun play() {
TODO("Not yet implemented")
}
override fun pause() {
TODO("Not yet implemented")
}
override fun stop() {
TODO("Not yet implemented")
}
override fun release() {
TODO("Not yet implemented")
}
override fun load(uri: String) {
TODO("Not yet implemented")
}
}
@@ -1,6 +0,0 @@
package fr.ajaury.gwenedeg.player.di
import org.koin.core.module.Module
actual val audioPlayerModule: Module
get() = TODO("Not yet implemented")
@@ -0,0 +1,32 @@
package fr.ajaury.gwenedeg.player
import kotlinx.browser.document
import org.w3c.dom.HTMLAudioElement
class WebAudioPlayer : AudioPlayer {
private var audio: HTMLAudioElement? = null
override fun load(uri: String) {
audio = (document.createElement("audio") as HTMLAudioElement).apply {
src = uri
}
}
override fun play() {
audio?.play()
}
override fun pause() {
audio?.pause()
}
override fun stop() {
audio?.pause()
audio?.currentTime = 0.0
}
override fun release() {
audio?.pause()
audio = null
}
}
@@ -0,0 +1,9 @@
package fr.ajaury.gwenedeg.player
class WebAudioSessionManager : AudioSessionManager {
override fun activate() {
}
override fun deactivate() {
}
}
@@ -0,0 +1,13 @@
package fr.ajaury.gwenedeg.player.di
import fr.ajaury.gwenedeg.player.AudioPlayer
import fr.ajaury.gwenedeg.player.AudioSessionManager
import fr.ajaury.gwenedeg.player.WebAudioPlayer
import fr.ajaury.gwenedeg.player.WebAudioSessionManager
import org.koin.core.module.Module
import org.koin.dsl.module
actual val audioPlayerModule: Module = module {
single<AudioPlayer> { WebAudioPlayer() }
single<AudioSessionManager> { WebAudioSessionManager() }
}