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

标签 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 作为音频设备,但现在它仍然通过扬声器播放。

最佳答案

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

关于java - AudioManager 不工作 - 既不打开扬声器也不静音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55917831/

相关文章:

android - Android API 级别 7 中是否有 requestAudioFocus 的等效函数?

java - 在 DatePicker 中设置默认日期(其他格式) - Android

java - 为什么java中的serialVersionUID必须是static、final、long类型?

java - 检查耳机是否在不同的 API 级别上连接

android - 取消静音后,来电时手机只会振动,无法播放铃声

javascript - 尝试调用另一个对等点时出现 PeerJS 错误 : Failed to execute 'addStream' on 'RTCPeerConnection' : parameter 1 is not of type 'MediaStream'

java - Hibernate postgresql 通知功能

java - 寻求使用函数式编程来解决重复代码

javascript - 如何更改 opentok javascript SDK 中的音频输出?

webrtc - 如何将使用 WebRTC 录制的音频流传递到 Google Speech api 以进行实时转录?