2012-04-30 17 views
19

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

que utiliza este código para silenciar mi sonido de audio al tomar la fotografía:

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

que silenciar el sonido y el silencio del teléfono.

mCamera.takePicture(null, null, photoCallback); 

luego tome la fotografía

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

+0

ver este http://wiki.dandascalescu.com/howtos/android#How_do_I_disable_the_camera_shutter_sound.3F – MAC

+3

Siga estos dos enlaces: http://stackoverflow.com/questions/8906909/how-do-i- cambiar-default-obturador y del sonido en-android http://stackoverflow.com/questions/9106939/android-camera-takepicture-possible-to-disable-shutter-sound-and-preview-surfa –

+1

Did Intenta configurar la devolución de llamada del obturador a nulo? ¿Cómo estás tomando la foto? – styler1972

Respuesta

2

hay teléfonos que reproducen el sonido del obturador por sí solos. En este caso, parece que no es posible desactivar el sonido del obturador.

1

Una manera loca que puedo pensar es obtener el permiso para silenciar el teléfono.

+0

¿Cómo hacerlo? Ya dejé el teléfono en silencio pero aún no funcionaba. – user430926

3

El método que ha publicado ya es el mejor que puedo encontrar/pensar. La razón por la que no funciona es porque no se supone que lo haga. De hecho, en muchos lugares (la mayoría de Europa, Japón, partes de EE. UU., Etc.) es ilegal desactivar el sonido del obturador. Esto es para que no pueda tomar fotografías en lugares donde no se supone que debe hacerlo, por lo que no toma fotografías de personas sin su permiso, y así sucesivamente. Es solo un tiro en la oscuridad que el fabricante ha intentado deliberadamente asegurarse de que no puede hacerlo sin importar qué (aunque técnicamente siempre hay una forma), pero cuando lo piensa, lógicamente no hay razón por la que su código no debería funciona bien? Es simple, básico, tiene sentido. De todos modos, hay muchas aplicaciones de cámara silenciosa y la cámara + ICS está construida en la cámara ICS predeterminada, pero tiene una opción de obturador silencioso, por lo que debe ser posible.

+0

Encontré [se necesita una referencia sobre los sonidos del obturador] (https://www.privacyinternational.org/reports/south-korea/ii-surveillance-policy) en Corea del Sur, pero nada sobre los EE. UU. ¿Puede indicarme un documento que explique el estado legal de esto en los Estados Unidos? AFAICT [este proyecto de ley] (http://www.govtrack.us/congress/bills/111/hr414) nunca se aprobó. – cberzan

7

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 usar el método AudioManager.setStreamMute() ya que no es un problema conocido en android a continuación la versión 2.3 ..

+0

esto no funciona para mí con 2.3.3 – wired00

+0

funciona con 2.3.3, pero necesita realizar la llamada de silenciamiento antes de llamar a tomar imagen() y anular el silencio en ShutterCallback.onShutter() –

+1

¿qué es muteMode? –

5

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

En primer lugar, detectar si se puede desactivar el sonido del obturador mediante programación, a continuación, desactivarlo

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

que necesitará para programar una ID a la cámara Identificación apropiada en la llamada a Camera.getCameraInfo o inhabilitar a todos en una de 0 a Camera.getNumberOfCameras() - 1.

El developer documentation recomienda reproducir otro sonido en lugar del sonido del obturador, pero no está obligado a hacerlo.

Cuestiones relacionadas