L'enregistrement d'un fichier wav à partir de l'entrée mic Android - problèmes

J'ai besoin d'être en mesure de créer un fichier WAV en utilisant le micro dans Android. Actuellement, je vais avoir beaucoup de mal. Jusqu'à présent, c'est ma situation. Je suis en utilisant des pièces de la micDroid projet de code d'enregistrement ainsi:

//read thread


int sampleRate = 44100;
int bufferSize = AudioRecord.getMinBufferSize(sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);
AudioRecord ar = new AudioRecord(AudioSource.MIC,sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT,bufferSize);
short[] buffer = new short[bufferSize];

ar.startRecording();
while(isRunning){
    try{
        int numSamples = ar.read(buffer, 0, buffer.length);
        queue.put(new Sample(buffer, numSamples));
    } catch (InterruptedException e){
        e.printStackTrace();
    }
}


//write thread


int sampleRate = 44100;
WaveWriter writer = new WaveWriter("/sdcard","recOut.wav",sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);
try {
    writer.createWaveFile();
} catch (IOException e) {
    e.printStackTrace();
}
while(isRunning){
    try {
        Sample sample = queue.take();
        writer.write(sample.buffer, sample.bufferSize);
    } catch (IOException e) {
        //snip
    }
}

Qui semble fonctionner bien, mais le résultat final reconnaissable, contient tout ce que j'ai dit, mais c'est horriblement déformé. Voici une capture d'écran de l'audace (WMP refuse de jouer le fichier).

L'enregistrement d'un fichier wav à partir de l'entrée mic Android - problèmes

Toute aide serait grandement appréciée, laissez-moi savoir si vous avez besoin de plus de code /info.

Mise à jour

Suivantes markus suggestions, voici mon code mis à jour:

int sampleRate = 16000;

writer = new WaveWriter("/sdcard","recOut.wav",sampleRate,android.media.AudioFormat.CHANNEL_IN_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);

int bufferSize = AudioRecord.getMinBufferSize(sampleRate,android.media.AudioFormat.CHANNEL_IN_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);
AudioRecord ar = new AudioRecord(AudioSource.MIC,sampleRate,android.media.AudioFormat.CHANNEL_IN_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT,bufferSize);

byte[] buffer = new byte[bufferSize]; //all references changed from short to byte type

...et une autre audace screencap:
L'enregistrement d'un fichier wav à partir de l'entrée mic Android - problèmes

les Vagues de l'Écrivain lib vous utilisez?

OriginalL'auteur fredley | 2010-12-15