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

是否有任何方法可以在Android(非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上进行测试时,它无法正常工作。 还有其他工作吗?

  • Lame MP3 Encoder编译为Android
  • Android:VideoView中的多个音轨?
  • Android Media Player:从文件下载到文件和流
  • 访问Android媒体流以进行音频可视化
  • Android:检测另一个应用程序已经开始播放音频
  • 音频框架:流,策略,设备
  • 为什么不能在Android中的语音呼叫上播放音频文件
  • 确定音频文件的持续时间和格式
  • 试试这段代码:

     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()方法,因为在版本2.3以下的android上有一个已知问题..

    从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的循环Camera.getNumberOfCameras()它们全部禁用。

    开发人员文档建议您播放另一种声音来代替快门声音,但您没有义务。

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

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

    我能想到的一种疯狂方式是获得静音手机的许可。