【发布时间】:2019-05-02 18:38:24
【问题描述】:
在一个进行视频聊天的 WebRT 应用中,我想将手机设置为使用扬声器而不是听筒来播放声音。
我尝试过使用AppRTCAudioManager(包装了AudioManager)设置静音和设置免提,直接使用AudioManager设置静音,将代码放在不同的方法中等等。
android.permission.MODIFY_AUDIO_SETTINGS 被授予。
private void gotRemoteStream(MediaStream stream){
...
runOnUiThread(new Runnable() {
@Override
public void run() {
...
audioManager = AppRTCAudioManager.create(context);...
audioManager.start((x, y) -> {}) // a callback that does logging, omitted for clarity
// First try setting audio device with the AppRTCAudioManager, which wraps AudioManager.
audioManager.selectAudioDevice(AppRTCAudioManager.AudioDevice.SPEAKER_PHONE);
AppRTCAudioManager.AudioDevice ad = audioManager.getSelectedAudioDevice();
//Shows SPEAKER_PHONE, but sound still plays from earpiece.
// Next try it with the AudioManager itself.
AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
am.setMicrophoneMute(true);
am.setSpeakerphoneOn(true);
boolean mute = am.isMicrophoneMute(); //false
boolean on = am.isSpeakerphoneOn(); //false
}
audioManager.getSelectedAudioDevice 方法将音频设备显示为扬声器,但 am.isSpeakerphoneOn 显示扬声器仍处于关闭状态。
此外,使用 am.setMicrophoneMute 将麦克风设置为静音不会做任何事情。 am.IsMicrophone 静音仍然显示错误。
提前感谢您的帮助。
更新:我的手机神秘地开始通过扬声器播放。但是 AudioManager 代码仍然没有做任何事情。我更改了 AudioManager 代码以选择 EARPIECE 作为音频设备,但现在它仍然通过扬声器播放。
【问题讨论】:
标签: java webrtc android-audiomanager