【发布时间】:2018-07-18 01:23:43
【问题描述】:
我像这样禁用了相机快门声音:
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 上测试过,快门声音总是开到最大。当我在应用程序之外的系统设置中完全静音时 - 仍然存在快门声音。 此外,如果我在应用程序内部使用代码 sn-p 禁用快门声音,则在三星设备上会播放快门声音。
我尝试将所有标志静音:
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);
还是一样的结果。
谁能告诉我,我在这里缺少什么?三星是否使用某种不同的音频流?
编辑 1: 我添加了以下代码,以检查上面的代码 sn-p 是否发生任何变化:
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',然后我正在静音这个 Stream。之后,我正在检查设备是否实施了固定音量策略,即“假”。 再次检查 StreamVolume 后,它的值为“0”。
难道快门声音有完全不同的AudioStream,即使我使用默认系统摄像头,也可以通过静音系统声音设置来禁用快门声音?
【问题讨论】:
-
相机怎么称呼?如果您使用意图 (developer.android.com/training/camera/…),则您已经放弃了所有控制权。
标签: android android-camera android-audiomanager