gpt4 book ai didi

java - 如何使用 AudioManager 使听筒静音?

转载 作者:太空狗 更新时间:2023-10-29 14:38:19 25 4
gpt4 key购买 nike

谁能告诉我如何在 android (targetSdkVersion 26) 中使听筒静音。我试过这个:

audioManager.setSpeakerphoneOn(false);

但它只会使扬声器静音,不会使听筒静音。
我也试过这个:

audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setStreamVolume(STREAM_VOICE_CALL, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

还有这个:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
am.requestAudioFocus(new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE)
.setAudioAttributes(new AudioAttributes.Builder().setUsage(USAGE_VOICE_COMMUNICATION).build()).build());
am.adjustVolume(AudioManager.ADJUST_MUTE, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}

效果相同。

我使用 webrtc,我的目标是静音/取消静音输出音频。非常感谢。

最佳答案

静音/取消静音的方法如下:

private RTCSession currentSession;

private void setAudioEnabled(boolean isAudioEnabled) {
if (currentSession != null && currentSession.getMediaStreamManager() != null) {
currentSession.getMediaStreamManager().getLocalAudioTrack().setEnabled(isAudioEnabled);
}
}

如果您想在不同的音频源之间切换:

public void onSwitchAudio() {
if (audioManager.getSelectedAudioDevice() != AppRTCAudioManager.AudioDevice.SPEAKER_PHONE) {
audioManager.selectAudioDevice(AppRTCAudioManager.AudioDevice.SPEAKER_PHONE);
} else {
if (audioManager.getAudioDevices().contains(AppRTCAudioManager.AudioDevice.BLUETOOTH)) {
audioManager.selectAudioDevice(AppRTCAudioManager.AudioDevice.BLUETOOTH);
} else if (audioManager.getAudioDevices().contains(AppRTCAudioManager.AudioDevice.WIRED_HEADSET)) {
audioManager.selectAudioDevice(AppRTCAudioManager.AudioDevice.WIRED_HEADSET);
} else {
audioManager.selectAudioDevice(AppRTCAudioManager.AudioDevice.EARPIECE);
}
}
}

关于java - 如何使用 AudioManager 使听筒静音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52400720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com