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".
在进行视频聊天的 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".