简体   繁体   中英

How to mute camera shutter sound on android phone

Is there any way to mute the camera shutter sound in Android (not rooted phone)?

I use this code to mute my audio sound when taking picture:

  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);

I mute the sound and silent the phone.

mCamera.takePicture(null, null, photoCallback); 

then take the picture

It's working on HTC HERO, HTC Desire, Motorola ME860, MotoA953 . But when I tested it on Samsung Tab p1000 and Sony Experia R800i , it's not working. Is there any other work around?

try this code:

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...

do not use AudioManager.setStreamMute() method since there is a known issue on android below version 2.3..

Since API level 17 (4.2) there is a proper, reliable way to do this, if the phone manufacturer supports it.

First, detect whether you can disable the shutter sound programatically, then disable it

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

You'll need to set id to the appropriate camera id in the call to Camera.getCameraInfo , or disable them all in a loop from 0 to Camera.getNumberOfCameras() - 1.

The developer documentation recommends that you play another sound in place of the shutter sound, but you're not obliged to.

The method you've posted already is actually the best one I can find/think of. The reason it doesn't work is because it's not supposed to. In fact, in many places (most of Europe, Japan, parts of US, etc.) it's illegal to disable the shutter sound. This is so that you can't take pictures in places you're not supposed to, and so you don't take pictures of people without their permission, and so on. It's just a shot in the dark that the manufacturer has purposely tried to make sure you can't do it no matter what (though technically there's always a way), but when you think about it, logically there's no reason your code shouldn't work right? It's simple, basic, makes sense. Anyways, there are many silent camera apps out there and Camera+ ICS is actually built on the default ICS camera but has a Silent Shutter option so it must be possible.

there are a phones out there which play the shutter sound on their own. In this case, it seems to not be possible to disable the shutter sound.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM