Sto riscontrando alcuni problemi con la classe AudioRecord. Voglio memorizzare i dati registrati in un buffer, ma non sono sicuro di quale sia il modo corretto per farlo. Ho passato un gran numero di esempi, ma la maggior parte di loro sono stati resi comici e rappresentano molti approcci diversi. Sto cercando una spiegazione semplice o semplice.AudioRecord - come ottenere i dati nel buffer?
Qui sono le mie impostazioni audio per il mio progetto:
int audioSource = AudioSource.MIC;
int sampleRateInHz = 8000;
int channelConfig = AudioFormat.CHANNEL_IN_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
short[] buffer = new short[bufferSizeInBytes];
AudioRecord audioRecorder = new AudioRecord(audioSource,
sampleRateInHz,
channelConfig,
audioFormat,
bufferSizeInBytes);
Sto cercando di creare una funzione di registrazione:
public void Recording() {
audioRecorder.startRecording();
...
audioRecorder.stop();
audioRecorder.release();
}
So che ho 'm dovrei usare .read (brevi [] audioData, int offsetInShorts, int sizeInShorts). E qui iniziano i miei problemi. Non sono sicuro di come funzioni il buffer audioData - presumo che la funzione inserisca campioni registrati nei dati audio. Cosa succede se è completamente riempito con i dati? Inizia la riscrittura dalla prima posizione? Se lo fa, credo di dover copiare tutti i campioni raccolti altrove. Solleva un'altra domanda: come posso verificare se il buffer di funzione .read (...) è già pieno? Devo misurare il tempo e copiare il contenuto del buffer o c'è un altro modo per raggiungerlo? Devo anche creare un thread per l'intera operazione di registrazione?
Ci scusiamo per chiedere tante domande in un argomento :)
cosa è ** qArray ** qui? – OnePunchMan
potrebbe l'arraylist. Non ricordavo ora. Meglio riferire questo esempio http://stackoverflow.com/questions/8499042/android-audiorecord-example/13487250#13487250 –