2012-02-07 14 views
5

En Android es posible grabar llamadas de voz durante llamadas entrantes/salientes sin abrir el altavoz del móvil. Había visto una aplicación en el mercado de Android. No graba correctamente otras voces laterales sin abrir el altavoz porque usa un micrófono para grabar. ¿Puede hacerse con otras técnicas?¿Es posible en Android grabar la llamada durante llamadas entrantes o salientes

final MediaRecorder callrecorder = new MediaRecorder(); 

callrecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 
callrecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
callrecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
callrecorder.setOutputFile(recordPath); 
callrecorder.prepare(); 
callrecorder.start(); 
+2

aunque es posible grabar, pero en algunos países es ilegal, hace mucho tiempo que hemos hecho una aplicación de Blackberry, pero que fue prohibido debido a la violación de alguna ley de privacidad. – Yuvi

+0

Sí, es posible, marque [este] (http://stackoverflow.com/questions/6839297/record-call-in-android-2-2) enlace. También puede encontrar un código de muestra para grabar. – Lucifer

+0

¿es posible sin abrir el altavoz del móvil? – shyam

Respuesta

2

Es necesario utilizar MediaRecorder clase de la siguiente manera,

recorder = new MediaRecorder(); 
int audioSource = MediaRecorder.AudioSource.VOICE_CALL; 
recorder.setAudioSource(audioSource); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
final String filePath = Environment.getExternalStorageDirectory() + "/record.3gpp"; 
final File file = new File(filePath); 
file.getParentFile().mkdirs(); 
recorder.setOutputFile(filePath); 
recorder.prepare(); 
recorder.start(); // Recording is now started 
+0

¿es posible sin abrir el altavoz del móvil? – shyam

+0

¿Alguna limitación del dispositivo? – shyam

0

teléfonos Android (que yo sepa) tienen un procesador de aplicaciones y un procesador de módem. Cuando el teléfono está en una llamada de voz, los datos de audio se enrutan (a menos que haya un cambio de HW) desde el procesador de módem al hardware de audio directamente. El procesador de la aplicación no tiene conocimiento de los datos de audio, pero solo conoce el estado de la llamada.

Por lo tanto, en resumen, no podrá grabar los datos de audio sin la compatibilidad adecuada con HW.

+0

qué tipo de soporte de hardware requiere qué android no tiene en todas las versiones ... ¿hay limitaciones para las versiones de Android también? – shyam

+0

No tiene nada que ver con la versión de Android. El soporte de HW implica que las líneas de PCM se extraigan del procesador de módem al procesador de la aplicación. – santosh

0

Ajuste de la fuente de audio en MIC trabajó para mí ..

CallRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

Pero no todos los dispositivos proporcionan el soporte de hardware para grabación de llamadas. Consulte este [enlace]: http://forum.xda-developers.com/showthread.php?t=926498.

El resultado fue que en algunos teléfonos tanto la persona que llama como la voz del destinatario se grabaron, mientras que en otros solo se grabó la voz del hablante.

0

Puede consultar con ambas fuentes de audio MediaRecorder.AudioSource.VOICE_DOWNLINK & MediaRecorder.AudioSource.VOICE_UPLINK a tiempo.

Esta solución funcionó para mí.

Callrecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK | MediaRecorder.AudioSource.VOICE_UPLINK); 
Cuestiones relacionadas