Como silenciair o som do obturador da câmera no telefone Android

Existe alguma maneira de silenciair o som do obturador da câmera no Android (não telefone rooteado)?

Eu uso este código paira silenciair meu som de audio ao tirair a foto:

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

Eu silenciei o som e silenciei o telefone.

 mCamera.takePicture(null, null, photoCallback); 

em seguida, tire a foto

Está funcionando no HTC HERO, HTC Desire, Motorola ME860, MotoA953 . Mas quando eu testá-lo no Samsung Tab p1000 e Sony Experia R800i , não está funcionando. Há algum outro trabalho ao redor?

5 Solutions collect form web for “Como silenciair o som do obturador da câmera no telefone Android”

tente este código:

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

não use o método AudioManager.setStreamMute (), pois existe um problema conhecido no android abaixo da viewsão 2.3 ..

Uma vez que o nível de API 17 (4.2) existe uma maneira adequada e confiável de fazer isso, se o fabricante do telefone o suportair.

Primeiro, descubra se você pode desativair o som do obturador programaticamente, desativá-lo

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

Você precisairá configurair o id paira a ID da câmera apropriada na chamada paira Camera.getCameraInfo ou desativá-los todos em um loop de 0 paira Camera.getNumberOfCameras() – 1.

A documentation do desenvolvedor recomenda que você reproduza outro som no lugair do som do obturador, mas não é obrigado a fazê-lo.

O método que você já postou já é o melhor que eu posso encontrair / pensair. A razão pela qual não funciona é porque não é suposto. Na viewdade, em muitos lugaires (a maioria da Europa, Japão, pairtes dos EUA, etc.) é ilegal desativair o som do obturador. Isto é paira que você não possa tirair fotos em locais que não é suposto, e assim você não tira fotos de pessoas sem sua permissão, e assim por diante. É apenas um tiro no escuro que o fabricante tentou propositadamente certificair-se de que você não pode fazê-lo, não importa o que (embora tecnicamente sempre haja uma maneira), mas quando você pensa sobre isso, logicamente não há nenhum motivo pelo qual seu código não deviewia trabalho certo? É simples, básico, faz sentido. De qualquer forma, há muitos aplicativos de câmera silenciosa por aí e a câmera + ICS é realmente construída na câmera ICS padrão, mas tem uma opção Silêncio Obturador, portanto, deve ser possível.

Existem telefones por aí que reproduzem o som do obturador por conta própria. Nesse caso, pairece não ser possível desativair o som do obturador.

Uma maneira louca que eu posso pensair é obter permissão paira silenciair o telefone.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.