android - 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 中一样)?
解决方案
确保添加<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);
推荐阅读
- mongodb - 将 mongodb 与 spring 一起使用时发出“Found cycle for field”
- django - 未找到“索引”的反向。“索引”不是有效的视图函数或模式名称
- c - 如何修复运行我的代码后出现的分段错误错误 11?
- c# - 使用 Entity Framework 和 Linq 对不同的表进行相同的选择
- html - HTML 打印底部的神秘空白
- python-3.x - '| cut' 未被识别为外部或内部命令
- visual-studio - 将 parquet-tools 添加到路径 (Visual Studio Code)
- javascript - 如何强制文件下载在 iPhone 的新标签页中打开?
- php - 如何将数组值存储在 php 的会话变量中并供以后使用
- java - 如何为基于字符串标准从数组中过滤元素的方法编写测试