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

use*_*926 21 audio android android-camera

是否有任何方法可以在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);
Run Code Online (Sandbox Code Playgroud)

我把声音静音,手机静音.

mCamera.takePicture(null, null, photoCallback); 
Run Code Online (Sandbox Code Playgroud)

然后拍照

它正在努力HTC HERO, HTC Desire, Motorola ME860, MotoA953.但是,当我测试Samsung Tab p1000Sony Experia R800i,它不工作.还有其他工作吗?

小智 8

试试这段代码:

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...
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*unt 6

从API级别17(4.2)开始,如果手机制造商支持,则有一种正确,可靠的方法.

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

Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(id, info);
if (info.canDisableShutterSound) {
    mCamera.enableShutterSound(false)
}
Run Code Online (Sandbox Code Playgroud)

您需要在调用中将id设置为相应的摄像机ID Camera.getCameraInfo,或者在0到Camera.getNumberOfCameras()-1 的循环中将它们全部禁用.

开发者文档建议您在地方快门声音的播放另一种声音,但你并非必须.


Roo*_*kie 3

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