AudioManager不起作用-既不打开扬声器也不静音

时间:2019-04-30 09:25:58

标签: java webrtc android-audiomanager

在一个进行视频聊天的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静音仍然显示为false。

在此先感谢您的帮助。

更新:我的手机神秘地开始通过扬声器通话。但是AudioManager代码仍然不执行任何操作。我更改了AudioManager代码,将EARPIECE选择为音频设备,但现在它仍然可以通过扬声器播放。

1 个答案:

答案 0 :(得分:0)

最后找到答案;我输错了权限<uses-permission android:name="audioid.permission.MODIFY_AUDIO_SETTINGS"/>!显然,Android Studio编译器不会检查清单文件中的错误。因此,它并没有提醒我我键入了“ audioid”而不是“ android”。