我禁用了这样的相机快门声音:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
mgr.setStreamVolume(AudioManager.STREAM_SYSTEM,0,0);
mgr.adjustStreamVolume(AudioManager.STREAM_SYSTEM,AudioManager.ADJUST_MUTE, 0);
} else {
mgr.setStreamMute(AudioManager.STREAM_SYSTEM, true);
}
这适用于我的大多数测试设备。
如果我的系统范围声音选项很大,我可以在我的应用程序设置中禁用和启用快门声音。
我也在三星 A3(2016) 和三星 S7 上进行测试,快门声音始终处于最大。当我完全静音应用程序外系统设置中的所有声音时 - 仍然有快门声音。此外,如果我使用应用程序内部上方的代码段禁用快门声音,则在三星设备上播放快门声音。
我试图静音所有标志:
int streams = AudioManager.STREAM_ALARM|
AudioManager.STREAM_DTMF|
AudioManager.STREAM_MUSIC|
AudioManager.STREAM_NOTIFICATION|
AudioManager.STREAM_RING|
AudioManager.STREAM_SYSTEM|
AudioManager.STREAM_VOICE_CALL;
mgr.adjustVolume(AudioManager.ADJUST_MUTE, streams);
结果还是一样。
谁能告诉我,我在这里缺少什么?三星是否使用某种不同的 Audiostream?
编辑 1:我添加了以下代码以检查上面的代码片段是否有任何改变:
int streamMuted = mgr.getStreamVolume(AudioManager.STREAM_SYSTEM);
mgr.setStreamMute(AudioManager.STREAM_SYSTEM, true);
Boolean volumeFixed = mgr.isVolumeFixed();
streamMuted = mgr.getStreamVolume(AudioManager.STREAM_SYSTEM);
这里的输出是 STREAM_SYSTEM 开头的 StreamVolume 为“6”,然后我将这个流静音。之后,我正在检查设备是否实施了固定音量策略,该策略为“false”。再次检查 StreamVolume 后,它的值为“0”。
那么是不是快门声音有完全不同的AudioStream,即使我使用默认的系统相机,也可以通过静音系统声音设置来禁用快门声音?
快门声音可能取决于硬件/制造商。在某些 Android 版本/ROM 中,无法禁用快门声音。您可以尝试在拍照前启用“DoNotDisturb”模式,但不能保证效果很好。
更新
可能还有其他三种解决方案可以在拍照前尝试:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句