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

AudioManager not working - neither turns on speakerphone nor mutes

在进行视频聊天的 WebRT 应用程序中,我想将单元 phone 设置为使用扬声器 phone 而不是听筒播放声音。

我试过使用AppRTCAudioManager(包装AudioManager)设置静音和设置扬声器phone,直接使用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方法将音频设备显示为扬声器phone,但am.isSpeakerphoneOn显示扬声器phone仍处于关闭状态。

此外,将 microphone 设置为 am.setMicrophoneMute 静音也没有任何作用。 am.IsMicrophone 静音仍然说假。

在此先感谢您的帮助。

更新:我的手机 phone 神秘地开始通过扬声器播放 phone。但是 AudioManager 代码仍然没有做任何事情。我将 AudioManager 代码更改为 select EARPIECE 作为音频设备,但现在它仍然通过扬声器播放 phone。

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