Cómo silenciar el sonido del obturador de la cámara en el teléfono Android

¿Hay alguna manera de silenciar el sonido del obturador de la cámara en Android (teléfono no enraizado)?

Yo uso este código para silenciar mi sonido de audio al tomar la imagen:

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

Mudo el sonido y silencio el teléfono.

 mCamera.takePicture(null, null, photoCallback); 

Luego toma la foto

Está trabajando en HTC HERO, HTC Desire, Motorola ME860, MotoA953 . Pero cuando lo probé en Samsung Tab p1000 y Sony Experia R800i , no funciona. ¿Hay algún otro trabajo alrededor?

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

No utilice el método AudioManager.setStreamMute () ya que hay un problema conocido en android debajo de la versión 2.3.

Ya que el API nivel 17 (4.2) existe una forma adecuada y confiable de hacerlo, si el fabricante del teléfono lo admite.

Primero, detecte si puedes inhabilitar el sonido del obturador mediante programación, luego inhabilitarlo

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

Tendrás que configurar id en la id de cámara adecuada en la llamada a Camera.getCameraInfo , o desactivarlas todas en un bucle de 0 a Camera.getNumberOfCameras() – 1.

La documentación del desarrollador recomienda que reproduzca otro sonido en lugar del sonido del obturador, pero no está obligado a hacerlo.

El método que has publicado ya es en realidad el mejor que puedo encontrar / pensar. La razón por la que no funciona es porque no se supone que. De hecho, en muchos lugares (la mayor parte de Europa, Japón, partes de EE.UU., etc.) es ilegal desactivar el sonido del obturador. Esto es para que no puedas tomar fotos en lugares que no se supone que debes, y por eso no tomas fotos de personas sin su permiso, y así sucesivamente. Es sólo un tiro en la oscuridad que el fabricante ha intentado a propósito para asegurarse de que no puede hacerlo no importa lo que (aunque técnicamente siempre hay una manera), pero cuando se piensa en ello, lógicamente no hay razón su código no debe Trabajo correcto? Es simple, básico, tiene sentido. De todos modos, hay muchas aplicaciones de cámara silenciosa por ahí y Cámara + ICS es en realidad construido en la cámara ICS predeterminado, pero tiene una opción de obturador silencioso por lo que debe ser posible.

Hay un teléfono por ahí que jugar el sonido del obturador por su cuenta. En este caso, no parece posible desactivar el sonido del obturador.

Una manera loca que puedo pensar es conseguir el permiso de silenciar el teléfono.

  • Uso de ambas cámaras en android: "No se puede conectar al servicio de cámara"
  • Error: No se puede obtener un lockedBuffer, el cliente muy probable intenta bloquear más de buffers maxImages
  • Tomando capturas de pantalla mediante programación no captura el contenido de surfaceVIew
  • ¿Cómo evitar que el android invierta la imagen de la cámara frente a frente?
  • Estabilización de video en tiempo real
  • La parada del mediarecorder de Android falló
  • Cómo capturar una imagen en segundo plano sin utilizar la aplicación de cámara
  • Orientación personalizada de grabación de vídeo
  • Obtener el color del píxel tocado desde la vista previa de la cámara
  • Comprimir mapa de bits de la cámara
  • Cambiar entre las cámaras frontal y posterior
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.