«

»

mar 05 2012

Silenciar el sonido de disparo al realiazar grabaciones de video

A la hora de implementar nuestras aplicaciones a veces nos encontramos con que tareas que deberían de ser triviales no lo son debido, muy probablemente, a problemas con patentes o leyes de depende que país. Unos de estos casos lo encontramos a la hora de realizar grabaciones de vídeo mediante la clase MediaRecorder. Siempre que nuestra instancia de MediaRecorder cambia de estado (al ejecutar start() o stop() por ejemplo) el terminal produce un sonido de aviso de este evento y si intentamos encontrar un método propio de la clase para desactivarlo no lo encontraremos.

Para desactivar este sonido tendremos que desactivar directamente el canal por el que se reproduce. Dependiendo del país/firmware este canal puede diferir. Por regla general este sonido se reproducirá por STREAM_SYSTEM o STREAM_MUSIC, mientras que en esos países conflictivos donde la desactivación no se permite este se reproducirá por otros canales no cancelables, por lo que no tendremos que preocuparnos por que nuestras apps cumplan la normativa.

 

LA SOLUCIÓN

Para silenciar deberías hacer esto antes de empezar a grabar:

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
audioManager.setStreamMute(AudioManager.STREAM_MUSIC,true);

y una vez terminado dejarlo como estaba:

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
audioManager.setStreamMute(AudioManager.STREAM_MUSIC,false);

 

vía | IngensBlog

 

Acerca del autor

JMPergar

Mobile Developer at @BeRepublic & Founder of @AndroCode. Silver Speaker & Member of Core Team at @GDGBarcelona.