如何在安卓手机上静音相机快门声音

Posted

技术标签:

【中文标题】如何在安卓手机上静音相机快门声音【英文标题】:How to mute camera shutter sound on android phone 【发布时间】:2012-05-10 02:48:51 【问题描述】:

有没有办法在安卓(非root手机)中静音相机快门声音?

我在拍照时使用此代码静音:

  AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    int streamType = AudioManager.STREAM_SYSTEM;
    mgr.setStreamSolo(streamType, true);
    mgr.setRingerMode(AudioManager.RINGER_MODE_SILENT);
    mgr.setStreamMute(streamType, true);

我将声音静音并将电话静音。

mCamera.takePicture(null, null, photoCallback); 

然后拍照

它正在处理HTC HERO, HTC Desire, Motorola ME860, MotoA953。但是当我在Samsung Tab p1000Sony Experia R800i 上测试它时,它不起作用。有没有其他解决方法?

【问题讨论】:

看到这个wiki.dandascalescu.com/howtos/… 点击这两个链接:***.com/questions/8906909/…***.com/questions/9106939/… 您是否尝试将快门回调设置为空?你拍的怎么样? mCamera.takePicture(Camera.ShutterCallback 快门, Camera.PictureCallback raw, Camera.PictureCallback jpeg) mCamera.takePicture(null, null, photoCallback);我确实将快门回调设置为 null 【参考方案1】:

试试这个代码:

AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if(TextUtils.equals(muteMode, "mute"))
    manager.setStreamVolume(AudioManager.STREAM_SYSTEM, 0 , AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
else
    manager.setStreamVolume(AudioManager.STREAM_SYSTEM, manager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM) , AudioManager.FLAG_ALLOW_RINGER_MODES);

//here continue to take picture...

不要使用 AudioManager.setStreamMute() 方法,因为 android 2.3 以下版本存在一个已知问题..

【讨论】:

它适用于 2.3.3,但您需要在调用 takePicture() 之前进行静音调用,并在 ShutterCallback.onShutter() 中取消静音【参考方案2】:

从 API 级别 17 (4.2) 开始,如果手机制造商支持,就有一种适当、可靠的方法来执行此操作。

首先,检测是否可以通过编程方式禁用快门声音,然后将其禁用

Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(id, info);
if (info.canDisableShutterSound) 
    mCamera.enableShutterSound(false)

您需要在调用 Camera.getCameraInfo 时将 id 设置为适当的相机 ID,或者在从 0 到 Camera.getNumberOfCameras()- 1 的循环中禁用它们。

developer documentation 建议您播放另一种声音来代替快门声音,但您没有义务这样做。

【讨论】:

【参考方案3】:

您已经发布的方法实际上是我能找到/想到的最好的方法。它不起作用的原因是因为它不应该。事实上,在许多地方(欧洲大部分地区、日本、美国部分地区等)禁用快门声音是非法的。这样你就不能在你不应该去的地方拍照,所以你不要在未经他们许可的情况下给别人拍照,等等。制造商故意试图确保您无论如何都无法做到这一点只是在黑暗中的一枪(尽管从技术上讲总有办法),但是当您考虑它时,从逻辑上讲,您的代码没有理由不应该这样做工作对吗?这很简单,基本,有道理。无论如何,那里有很多静音相机应用程序,Camera+ ICS 实际上是在默认 ICS 相机上构建的,但有一个静音快门选项,所以它必须是可能的。

【讨论】:

我在韩国找到了a reference about shutter sounds being required,但没有找到关于美国的信息。你能指点我一份解释这在美国的法律地位的文件吗? AFAICT this proposed bill 从未通过。【参考方案4】:

那里有一部手机可以自行播放快门声音。在这种情况下,似乎无法禁用快门声。

【讨论】:

【参考方案5】:

我能想到的一个疯狂的方法是获得将手机静音的权限。

【讨论】:

怎么做?我已经让手机静音了,但还是不行。

以上是关于如何在安卓手机上静音相机快门声音的主要内容,如果未能解决你的问题,请参考以下文章

三星手机,安卓系统,怎么关闭照相机声音?

手机拍照声音怎么关闭 安卓手机拍照声音

怎么关安卓手机照相机声音

V6版如何关闭相机快门声音和截图声音

android静音相机快门声音?

在 iPhone 上静音 AVCapture 快门声音 [重复]