我禁用了相机的快门声,如下所示:
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',然后我将这个Stream静音。之后,我要检查设备是否实施了固定的卷策略,即“ false”。 再次检查StreamVolume后,其值为'0'。
那么即使我使用默认的系统摄像机,快门声音也可能具有完全不同的AudioStream,可以通过静音系统声音设置来禁用快门声音吗?
答案 0 :(得分:1)
快门声音可能取决于硬件/制造商。在某些Android版本/ ROM中,无法禁用快门音。您可以在拍摄照片之前尝试启用“ DoNotDisturb”模式,但不能保证它能正常工作。
更新
在拍照之前,可能还有其他三种解决方案:
答案 1 :(得分:1)
将其放入您的清单
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<version>1.6.0</version>
<executions>
<execution>
<id>npm install</id>
<goals>
<goal>exec</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<executable>${npm.executable}</executable>
<arguments>
<argument>install</argument>
</arguments>
<workingDirectory>${basedir}/target/angular5/tourism</workingDirectory>
<target>
<echo message="Npm install" />
</target>
</configuration>
</execution>
</executions>
</plugin>