WebView 更改音频输出设备

Posted

技术标签:

【中文标题】WebView 更改音频输出设备【英文标题】:WebView change audio output device 【发布时间】:2021-11-19 09:33:21 【问题描述】:

如何将 WebView 的音频输出从扬声器更改为听筒?我试过这段代码,但它不起作用

    private fun setupAudio() 
        val am = getSystemService(AUDIO_SERVICE) as AudioManager
        am.mode = AudioManager.MODE_IN_COMMUNICATION
        am.stopBluetoothSco()
        am.isSpeakerphoneOn=false
        Log.e("Foo","Current mode is $am.mode")
    

有权限

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

【问题讨论】:

【参考方案1】:

在BT中停止发送和接收,关闭BT然后关闭免提。这是为了打开听筒。

        am.setMode(AudioManager.MODE_IN_COMMUNICATION); //
        am.stopBluetoothSco(); // stop send and receive
        am.setBluetoothScoOn(false); // turn off bluetooth
        am.setSpeakerphoneOn(false); // true to turn on speakerphone; false to turn it off

打开内置扬声器 -

   am.setMode(AudioManager.MODE_NORMAL);
   am.stopBluetoothSco();
   am.setBluetoothScoOn(false);
   am.setSpeakerphoneOn(true);

【讨论】:

不过,声音还是来自扬声器。【参考方案2】:

我搞定了,诀窍是在播放开始后调用setupAudio() 函数。

【讨论】:

以上是关于WebView 更改音频输出设备的主要内容,如果未能解决你的问题,请参考以下文章

滚动视图内的iOS webView:根据设备方向更改高度

HTML5在android WebView中没有视频只有音频播放

当Webview方向更改然后按下后退按钮时,应用程序崩溃

如何在android的webview上播放音频?

android WebView音频关闭的问题

Android WebView 中的 HTML5 视频不一致