Android 当状态改变时,需要关闭录音机播放的声音

Android 当状态改变时,需要关闭录音机播放的声音,android,cordova,audio,mute,Android,Cordova,Audio,Mute,我尝试了在下面的链接中找到的更改,但没有效果 我两个都试过了 AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE); audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, false); audioManager.setStreamMute(AudioManager.STREAM_

我尝试了在下面的链接中找到的更改,但没有效果

我两个都试过了

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
audioManager.setStreamMute(AudioManager.STREAM_MUSIC,false);

但当我启动媒体录音机时,我仍然能听到声音。我已尝试将此代码放在应用程序的开始处,并直接放在:

mediaRecorder.start();

还有其他建议吗?

SetStreamMute仅适用于系统和音乐。对于所有其他,您应该使用SetStreamVolume

请尝试以下代码:

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
    audioManager.setStreamMute(AudioManager.STREAM_MUSIC,true);
    audioManager.setStreamVolume(AudioManager.STREAM_ALARM, 0, 0);
    audioManager.setStreamVolume(AudioManager.STREAM_DTMF, 0, 0);
    audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, 0);
    audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
有关健全性检查:

Log.d(TAG, String.format("%d,  %d, %d, %d, %d, %d, %d",
            audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM),
            audioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
            audioManager.getStreamVolume(AudioManager.STREAM_ALARM),
            audioManager.getStreamVolume(AudioManager.STREAM_DTMF),
            audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION),
            audioManager.getStreamVolume(AudioManager.STREAM_RING)
            ));
结果应该是:0,0,0,0,0,0,0


请记住,具有音量的游戏(不包括setStreamMute)在活动结束后不会重置以前的值,因此您可能希望将其存储在onDestroy()或更早版本中进行还原。

那么您正在播放音乐,以及在录制时停止播放什么?否,我正在按顺序录制一系列视频,并将它们保存到一个文件中,这样我就可以将整个视频分段下载。MediaRecorder在每个视频开始时播放快门声音。我试着把它关掉,这样它就不会在序列中一遍又一遍地响。
Log.d(TAG, String.format("%d,  %d, %d, %d, %d, %d, %d",
            audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM),
            audioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
            audioManager.getStreamVolume(AudioManager.STREAM_ALARM),
            audioManager.getStreamVolume(AudioManager.STREAM_DTMF),
            audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION),
            audioManager.getStreamVolume(AudioManager.STREAM_RING)
            ));