Quale sarà l'algoritmo per un semplice registratore di suoni in Android?
Se volete sviluppare un'applicazione che possa registrare il suono, ci sono due modi per farlo in Android:
- Classe MediaRecorder
public class MediaRecorder
extends Object
Questa classe è usata per registrare audio e video. The recording control is based on a simple state machine (see below).
- MediaRecorder recorder = new MediaRecorder();
- recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
- recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
- recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
- recorder.setOutputFile(PATH_NAME);
- recorder.prepare();
- recorder.start(); // Recording is now started ...
- recorder.stop();
- recorder.reset(); // You can reuse the object by going back to setAudioSource() step
- recorder.release(); // Now the object cannot be reused
Most of the application uses this class if those application are not doing any special analysis on the audio.
MediaRecorder fornisce l'ampiezza massima dall'ultima chiamata del metodo getMaxAmplitude() in modo da poter implementare un visualizzatore di suoni per esempio.
Un esempio molto semplice della classe MediaRecorder:
EsempioAndroid MediaRecorder - javatpoint
Puoi anche fare riferimento a questo codice se vuoi registrare sia video che audio :
googlesamples/android-MediaRecorder
2. Classe AudioRecord
public class AudioRecord
extends Object implements AudioRouting
La classe AudioRecord gestisce le risorse audio per le applicazioni Java per registrare audio dall'hardware di ingresso audio della piattaforma. Questo si ottiene "tirando" (leggendo) i dati dall'oggetto AudioRecord.
Se vuoi fare la tua analisi mentre la registrazione è ancora in corso, devi usare AudioRecord, perché MediaRecorder registra automaticamente in un file e AudioRecorder ti dà solo il flusso audio grezzo e tu devi comprimerlo da solo.
AudioRecord ha lo svantaggio che dopo aver chiamato startRecording() devi prelevare i dati dall'istanza AudioRecord. Inoltre, devi leggere e processare i dati abbastanza velocemente in modo che il buffer interno non venga superato (guarda l'output di Logcat, AudioRecord ti dirà quando ciò accade).
Il codice della classe audiorecord di solito arriva a 3000 linee minimo :D
Cerca in questa classe in "telegram" per il sorgente android della classe AudioRecord:
DrKLO/Telegram
Articoli simili
- L'algoritmo di Dijkstra è un algoritmo greedy o un algoritmo di programmazione dinamica?
- Sono molto sensibile ai suoni quando dormo. C'è un'alternativa migliore dei tappi per le orecchie per eliminare i suoni esterni?
- Come fa un registratore di suoni a registrare il suono?
- Qual è il miglior registratore di schermo per uno smartphone Android per caricare video su YouTube?