android - 如何修复某些 android 设备(Twilio 可编程视频)中的低远程音频?
问题描述
我已经为 2 个设备之间的视频通话集成了 twilio 可编程视频,但问题是,在某些 android 设备中,远程音频非常低。我已经测试了其他应用程序,例如 whatsapp,这些设备上的 whatsapp 音频声音很大。
我试过 audioManager.setMode 但它不起作用。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_call);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
// Other functionalities
}
请指教。
解决方案
我遵循了建议的 Twilio 音频调试但没有得到任何结果,在玩了他们建议的内容之后,我能够创建这个函数,我在使用 Twilio 的活动的 onCreate 中调用它
private fun requestAudioFocus() {
val playbackAttributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build()
val focusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
.setAudioAttributes(playbackAttributes)
.setAcceptsDelayedFocusGain(true)
.setOnAudioFocusChangeListener { }
.build()
audioManager.requestAudioFocus(focusRequest)
audioManager.isSpeakerphoneOn = !isHeadphonesPlugged(this)
}
并且检查耳机功能是
fun isHeadphonesPlugged(context:Context): Boolean {
val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager?
val audioDevices = audioManager!!.getDevices(AudioManager.GET_DEVICES_ALL)
for (deviceInfo in audioDevices) {
if (deviceInfo.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES
|| deviceInfo.type == AudioDeviceInfo.TYPE_WIRED_HEADSET) {
return true
}
}
return false
}
我在调用 requestFocus() 之前定义了音频管理器
audioManager = this.getSystemService(Context.AUDIO_SERVICE) as AudioManager
希望这可以帮助某人!
推荐阅读
- excel - 尝试打开文件时未设置 VBA 对象变量或未设置块
- spring - 在“每个”块中指定方法参数类类型
- vue.js - Nativescript Vue - 将字符串绑定到标签样式属性不起作用
- python - Zipfile权限错误(13,该进程无法访问该文件,因为它正在被另一个进程使用)
- regex - 需要使用正则表达式查找第一个单词
- python - _batch_encode_plus() 得到了一个意外的关键字参数“return_attention_masks”
- c++ - ~A(){} 和 ~A() throw(){} 有什么区别,其中 A 是类名?
- kubernetes - 我应该怎么做才能使 traefik whitlelist 按预期工作
- c++ - 为什么 wcsncpy_s 在 linux 环境下不起作用
- c# - 使用自动映射器从字符串列表映射到枚举列表