09.02.2017 Views

creez-des-applications-pour-android

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6 Exploiter les fonctionnalités d’Android<br />

Pas facile à retenir, tout ça ! L’avantage ici, c’est que tout est automatique, alors vous n’avez «<br />

que » ces étapes à respecter.<br />

MediaRecorder recorder = new MediaRecorder();<br />

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);<br />

recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);<br />

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);<br />

recorder.setOutputFile(PATH_NAME);<br />

recorder.prepare();<br />

recorder.start();<br />

Une fois que vous avez décidé de finir l’enregistrement, il vous suffit d’appeler la méthode void<br />

stop(), puis de libérer la mémoire :<br />

recorder.stop();<br />

recorder.release();<br />

recorder = null ;<br />

6.5.2.2 Enregistrer du son au format brut<br />

L’avantage du son au format brut, c’est qu’il n’est pas traité et permet par conséquent certains<br />

traitements que la méthode précédente ne permettait pas. De cette manière, le son est de bien<br />

meilleure qualité. On va ici gérer un flux sonore, et non <strong>des</strong> fichiers. C’est très pratique dès qu’il<br />

faut effectuer <strong>des</strong> analyses du signal en temps réel.<br />

[[information]] | Nous allons utiliser ici un buffer, c’est-à-dire un emplacement mémoire temporaire<br />

qui fait l’intermédiaire entre deux matériels ou processus différents. Ici, le buffer récupérera<br />

les données du flux sonore <strong>pour</strong> que nous puissions les utiliser dans notre code.<br />

La classe à utiliser cette fois est AudioRecord, et on peut en construire une instance avec<br />

public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig,<br />

int audioFormat, int bufferSizeInBytes) où :<br />

— audioSource est la source d’enregistrement ; souvent on utilisera le micro MediaRecorder.AudioSourc<br />

— Le taux d’échantillonnage est à indiquer dans sampleRateInHz, même si dans la pratique<br />

on ne met que 44100.<br />

— Il faut mettre dans channelConfig la configuration <strong>des</strong> canaux audio ; s’il s’agit de<br />

mono, on utilise AudioFormat.CHANNEL_IN_MONO ; s’il s’agit de stéréo, on utilise<br />

AudioFormat.CHANNEL_IN_STEREO.<br />

— On peut préciser le format avec audioFormat, mais en pratique on mettra toujours<br />

AudioFormat.ENCODING_PCM_16BIT.<br />

— Enfin,on va mettre la taille totale du buffer dans bufferSizeInBytes. Si vous n’y comprenez<br />

rien, ce n’est pas grave, la méthode static int AudioRecord.getMinBufferSize(int<br />

sampleRateInHz, int channelConfig, int audioFormat) vous fournira une<br />

bonne valeur à utiliser.<br />

Une utilisation typique <strong>pour</strong>rait être :<br />

int sampleRateInHz = 44100 ;<br />

int channelconfig = AudioFormat.CHANNEL_IN_STEREO ;<br />

int audioFormat = AudioFormat.ENCODING_PCM_16BIT ;<br />

428

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!