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) } }