- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
谁能告诉我如何在 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/
每当我使用它时,它都会使我的应用程序崩溃。此外,对于振动模式,当我使用audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE)时,它会打
我正在尝试获取 ring 音量,但它总是给出 0,不管 我将其设置为多少音量(我通过“设置”访问它来做到这一点在电话里)。 audioManager.getstreamVolume(AudioMana
我正在制作一个说出来电者姓名的应用程序,该应用程序在使用 TextToSpeech 说出来电者姓名之前暂停铃声。我正在使用 检测当前的 Volume int musicVolume = audioMa
调用 AudioManager.setRingerMode 有什么区别?调用AudioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, ...
我正在尝试在通话时启用扬声器: final AudioManager audioManager = (AudioManager) context.getSystemService(Context.AU
AudioManager中有几种流类型.他们在低水平上有何不同?难道是使用例如AudioManager.STREAM_MUSIC 阻止输入麦克风流?还是别的? 最佳答案 一个最显着的区别是音量控制。
我尝试在播放媒体时通过 setMode(mode_in_call) 更改音频模式。所以,我确定我添加了权限 我这样写代码:AudioManager mAudioManager = (AudioMana
我的 getVolume() 方法总是返回 1.0。我已将手机静音,更改了音量,但是当我调用我的方法时,我随时都会收到 1f。我错过了什么吗? btnPlay.setOnClickListener(n
在进行视频聊天的 WebRT 应用程序中,我想将手机设置为使用免提而不是耳机播放声音。 我尝试过使用AppRTCAudioManager(它包装了AudioManager)来设置静音和设置扬声器,直接
通过按后退按钮关闭我的 Activity 后,我面临内存泄漏: 由于我无法弄清楚它是什么,所以我将几乎整个代码注释为: protected void onCreate(Bundle savedInst
安卓AudioManager有方法public void setStreamVolume (int streamType, int index, int flags) . 我不想使用任何标志,因为它们
我在 Activity 中执行以下代码来设置铃声模式和值: void setRinger(int value) { AudioManager manager = (AudioManager)t
当文本到语音系统说出一个短语时,我试图让音频播放器静音。正如预期的那样,audiomanager 在请求音频焦点时降低音量,但在调用 abandonAudioFocus 时,音量不会恢复并且不会调用
我在第 219 行收到空指针异常:amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);。以前没有发生过,今天我第一次看到,我使
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); switch (am.getRingerMode())
当使用以下代码建立电话调用时,我通过附件设置扬声器: audioManager.setMode(AudioManager.MODE_IN_CALL); audioManager.setSpeakerp
在我的 Android 应用程序中,我有一个方法,可以让我调整音量。这就像它应该的那样工作。 public void adjustVolume(int adjustType){ if(myAu
在我正在开发的应用程序中,当前台服务发生更新时,我们必须通过蜂鸣声通知用户。 我们使用这个 foreground service用于录音。要播放哔哔声,我们使用扬声器。我们在播放 beep 之前启用电
我正在构建一个媒体播放器并以类似于文档的方式实现 onAudioFocusChange(): OnAudioFocusChangeListener afChangeListener = new OnA
我正在使用 AudioManager 在调用电话之前通过听筒播放声音,因此我使用 AudioManager setMode(MODE_IN_CALL)。 我没有遇到任何问题,除了在 Galaxy S3
我是一名优秀的程序员,十分优秀!