Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 禁用相机快门声音,AudioManager在三星不工作_Android_Android Camera_Android Audiomanager - Fatal编程技术网

Android 禁用相机快门声音,AudioManager在三星不工作

Android 禁用相机快门声音,AudioManager在三星不工作,android,android-camera,android-audiomanager,Android,Android Camera,Android Audiomanager,我禁用了相机快门,声音如下: 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(Aud

我禁用了相机快门,声音如下:

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);
还是一样的结果

谁能告诉我,我在这里错过了什么?三星使用的是不同的音频流吗


编辑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_系统在开始时有StreamVolume“6”,然后我将这个流静音。之后,我将检查设备是否实现了固定卷策略,这是“false”。 再次检查StreamVolume后,其值为“0”


因此,快门声音是否具有完全不同的音频流,即使我使用默认的系统摄像头,也可以通过静音系统声音设置来禁用快门声音?

快门声音可能取决于硬件/制造商。在某些Android版本/ROM中,无法禁用快门声音。您可以在拍照前尝试启用“请勿打扰”模式,但不能保证它能正常工作

更新

在拍照之前,可以尝试其他三种解决方案:

  • 静音隐藏的“AudioManager.STREAM\u SYSTEM\u ENFORCED”流类型(使用反射)
  • 设置“AudioManager.SetSpakerPhone开启(错误)”
  • 使用隐藏的“android.media.AudioSystem.setDeviceConnectionState()”暂时禁用扬声器(请注意,此过程将为所有android系统关闭扬声器,因此,如果管理不当,并且在完成后未很好地恢复到以前的值,则非常危险)

快门声音可能取决于硬件/制造商。在某些Android版本/ROM中,无法禁用快门声音。您可以在拍照前尝试启用“请勿打扰”模式,但不能保证它能正常工作

更新

在拍照之前,可以尝试其他三种解决方案:

  • 静音隐藏的“AudioManager.STREAM\u SYSTEM\u ENFORCED”流类型(使用反射)
  • 设置“AudioManager.SetSpakerPhone开启(错误)”
  • 使用隐藏的“android.media.AudioSystem.setDeviceConnectionState()”暂时禁用扬声器(请注意,此过程将为所有android系统关闭扬声器,因此,如果管理不当,并且在完成后未很好地恢复到以前的值,则非常危险)
把这个放进你的舱单里


把这个放进你的舱单里



我尝试在系统设置中激活DND模式。打开应用程序并拍摄照片->快门声音响亮清晰。谢谢你的主意!我编辑了对其他三种可能的解决方案的回答,以尝试;)好建议。非常感谢。我设法使快门静音,通过反射调用STREAM_SYSTEM_强制流,尽管无法使用adjustStreamVolume或setStreamMute执行此操作,因此我不得不使用setStreamVolume,这相当混乱,因为流的激活不知怎的有问题。最后,我成功地实现了预期的行为。我尝试在systemsettings中激活DND模式。打开应用程序并拍摄照片->快门声音响亮清晰。谢谢你的主意!我编辑了对其他三种可能的解决方案的回答,以尝试;)好建议。非常感谢。我设法使快门静音,通过反射调用STREAM_SYSTEM_强制流,尽管无法使用adjustStreamVolume或setStreamMute执行此操作,因此我不得不使用setStreamVolume,这相当混乱,因为流的激活不知怎的有问题。最后,我成功地完成了所需的行为。就像所有其他权限一样。但这并没有改变任何事情。事实上,当我在应用程序中第一次尝试打开相机时,会有人问我是否愿意授予对相机的访问权限。但是当调用上面的代码时,我不会被请求权限。我在AndroidManifest.xml中添加了这行代码。就像所有其他权限一样。但这并没有改变任何事情。事实上,当我在应用程序中第一次尝试打开相机时,会有人问我是否愿意授予对相机的访问权限。但是,当上面的代码被调用时,我不会被要求获得许可。你如何调用摄像机?如果你使用intent(),你已经放弃了所有的控制权。你怎么称呼摄像机?如果使用intent(),则已放弃所有控制权。
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />