Files
tauri-plugin-duck/android/src/main/java/DuckPlugin.kt
2025-08-07 10:01:06 +02:00

52 lines
1.4 KiB
Kotlin

package de.cfp.duck
import android.app.Activity
import app.tauri.annotation.Command
import app.tauri.annotation.InvokeArg
import app.tauri.annotation.TauriPlugin
import app.tauri.plugin.JSObject
import app.tauri.plugin.Plugin
import app.tauri.plugin.Invoke
import android.media.AudioFocusRequest
import android.media.AudioManager
import android.context.Context
import android.webkit.WebView
@TauriPlugin
class DuckPlugin(private val activity: Activity): Plugin(activity) {
private val implementation = Duck()
private lateinit var audioManager: AudioManager
private lateinit var focusRequest: AudioFocusRequest
override fun load(webView: WebView) {
audioManager = (AudioManager) getBridge().getActivity().getSystemService(Context.AUDIO_SERVICE)
}
@Command
fun duck(invoke: Invoke) {
focusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK)
.setAcceptsDelayedFocusGain(false)
.setWillPauseWhenDucked(false)
.setForceDucking(true)
.build()
audioManager.requestAudioFocus(focusRequest)
val ret = JSObject()
ret.put("success", true)
invoke.resolve(ret)
}
@Command
fun unduck(invoke: Invoke) {
if (focusRequest != null) {
audioManager.abandonAudioFocusRequest(focusRequest)
}
val ret = JSObject()
ret.put("success", true)
invoke.resolve(ret)
}
}