我正在开发基于WebRTC本地预建库的Android VoIP聊天应用程序。必须与当前使用BT耳机播放的任何背景音乐同时工作。
我们有下一个:
我的应用会像这样初始化音频:
audioManager.setMode(AudioManager.MODE_NORMAL);
也尝试过MODE_IN_COMMUNICATION,但是它会立即将输出质量(webRTC和音乐)设置为较差,这是不可接受的。然后,我们有两种情况:
1)使用
audioManager.setSpeakerphoneOn(false);
audioManager.setBluetoothScoOn(true);
audioManager.setMicrophoneMute(false);
audioManager.startBluetoothSco();
导致音乐播放停止。
2)不使用startBluetoothSco()和上面的其他行-可以使音乐通过webRTC输出正常播放,但是webRTC使用设备的麦克风,而不是耳机上的麦克风
所需的行为是音乐继续在BT上播放以及webRTC输出,并从头戴式麦克风收集声音。有什么想法要实现吗?
PS。将来肯定会需要AudioManager.requestAudioFocus()对另一个语音应用程序的询问做出反应,只是想最大程度地简化问题。但是在这种情况下,我尝试不使用它,或者以其他方式使用它们都不能解决问题:
audioManager.requestAudioFocus(audioFocusChangeListener,
AudioManager.STREAM_VOICE_CALL,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);