首页 > 解决方案 > 如何修复某些 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
    }

请指教。

标签: androidaudiotwiliotwilio-video

解决方案


我遵循了建议的 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

希望这可以帮助某人!


推荐阅读