2012-02-07 13 views
5

In Android è possibile registrare la chiamata vocale durante le chiamate in entrata/in uscita senza aprire l'altoparlante del cellulare. Avevo visto un'applicazione nel mercato Android. Non registra correttamente la voce dell'altro lato senza aprire l'altoparlante perché utilizza il microfono per scopi di registrazione. Può essere fatto con altre tecniche?E 'possibile in Android registrare la chiamata durante le chiamate in entrata o in uscita

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

anche se è possibile registrare, ma in alcuni paesi è illegale, molto tempo fa abbiamo fatto un Blackberry App, ma che è stato vietato a causa di violazione di qualche legge sulla privacy. – Yuvi

+0

Sì, è possibile, Si prega di controllare [questo] (http://stackoverflow.com/questions/6839297/record-call-in-android-2-2) link. È inoltre possibile trovare il codice di esempio per la registrazione. – Lucifer

+0

è possibile senza aprire l'altoparlante del cellulare? – shyam

risposta

2

è necessario utilizzare MediaRecorder classe come segue,

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

è possibile senza aprire l'altoparlante del cellulare? – shyam

+0

eventuali limitazioni del dispositivo? – shyam

0

telefoni Android (a mia conoscenza) hanno un processore applicativo e un processore modem. Quando il telefono è in una chiamata vocale, i dati audio vengono instradati (a meno che non vi sia una modifica HW) dal processore del modem all'hardware audio direttamente. Il processore dell'applicazione è beatamente inconsapevole dei dati audio, ma conosce solo lo stato della chiamata.

Quindi, in breve, non sarà possibile registrare i dati audio senza il supporto HW appropriato.

+0

quale tipo di supporto hardware richiesto che Android non ha in tutte le versioni ... ci sono anche limitazioni per le versioni di Android? – shyam

+0

Non ha nulla a che fare con la versione di Android. Il supporto HW implica che le linee PCM vengano tracciate dal processore del modem al processore dell'applicazione. – santosh

0

Impostazione della sorgente audio al MIC ha lavorato per me ..

CallRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

Ma non tutti i dispositivi forniscono il supporto hardware per la registrazione delle chiamate. Segnala questo [collegamento]: http://forum.xda-developers.com/showthread.php?t=926498.

Il risultato è stato che in alcuni telefoni è stata registrata sia la voce del chiamante che quella del callee, mentre in altri è stata registrata solo la voce dell'altoparlante.

0

È possibile verificare con entrambe le sorgenti audio MediaRecorder.AudioSource.VOICE_DOWNLINK & MediaRecorder.AudioSource.VOICE_UPLINK alla volta.

Questa soluzione ha funzionato per me.

Callrecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK | MediaRecorder.AudioSource.VOICE_UPLINK); 
Problemi correlati