首页 > 解决方案 > android WebView 通过听筒或蓝牙播放音频

问题描述

我正在使用 peer.js 和 WebView 开发语音通话应用程序。我的意图是通过听筒或蓝牙耳机(如果已连接)播放远程流。并且还应该有一个切换到扬声器的选项。我尝试了以下代码,但音频仍然来自扬声器。

   private fun setupAudio() {
        val am = getSystemService(AUDIO_SERVICE) as AudioManager
        am.mode = AudioManager.MODE_IN_CALL
        am.isSpeakerphoneOn = false
    }

有没有更好的方法来做到这一点?或者我可以更改 WebView 的 AudioStreamType(就像在 MediaPlayer 中一样)?

标签: androidaudiowebviewwebrtcpeerjs

解决方案


确保添加<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />清单权限。

如果这不能解决问题,请尝试

Class audioSystemClass = Class.forName("android.media.AudioSystem");
Method setForceUse = audioSystemClass.getMethod("setForceUse", int.class, int.class);
// First 1 == FOR_MEDIA, second 1 == FORCE_SPEAKER. To go back to the default
// behavior, use FORCE_NONE (0).
setForceUse.invoke(null, 1, 1);

推荐阅读