Q:

AudioRecord buffer filled with zeros

Why is the audioData short[] buffer I create in the code below filled with 0 upon each
samplesIn += mRecordInstance.read(audioData, samplesIn, bufferSize - samplesIn);

? 
The size of the buffer (audioData.length) is NOT ZERO which means that the buffer is NOT EMPTY, it's just filled with zeros. 
I've tried changing the FREQUENCY to 8000 -> no change. 
I'm implementing the Echoprint library - please refer to this for more information on this should you require it. 
Proof from LogCat that the audioData buffer is filled with zeros:

// ...
public final static int LISTENING_PASS_TIME = 20;
// cap to 30 seconds max, 10 seconds min. 
public final static int MAX_LISTENING_PASS_TIME = 30;
public final static int MIN_LISTENING_PASS_TIME = 10;

private final int FREQUENCY = 11025;
private final int CHANNEL = AudioFormat. CHANNEL_IN_MONO;
private final int ENCODING = AudioFormat. ENCODING_PCM_16BIT;    

private Thread thread;
private volatile boolean isRunning = false;
AudioRecord mRecordInstance = null;

private short audioData[];
private int bufferSize; 
private int secondsToRecord;
private volatile boolean continuous;

public void stop() {
    this.continuous = false;
    if (mRecordInstance ! = null)
        mRecordInstance.stop();     
}

public void run() {
    this.isRunning = true;
    try {
        // create the audio buffer & get the minimum buffer size
        int minBufferSize = AudioRecord.getMinBufferSize(FREQUENCY,
                CHANNEL, ENCODING);
        Log.d("Fingerprinter", "minBufferSize: " + minBufferSize);

        // and the actual buffer size for the audio to record frequency *
        // seconds to record. 
        bufferSize = Math.max(minBufferSize, this. FREQUENCY
                * this.secondsToRecord);
        Log.d("Fingerprinter", "bufferSize: " + bufferSize);

        audioData = new short[bufferSize];

        // start recorder
        mRecordInstance = new AudioRecord(MediaRecorder. AudioSource. MIC,
                FREQUENCY, CHANNEL, ENCODING, minBufferSize);

        // start recording
        willStartListening();

        mRecordInstance.startRecording();
        boolean firstRun = true;
        do {
            try {
                willStartListeningPass();

                long time = System.currentTimeMillis();
                // fill audio buffer with mic data. 
                int samplesIn = 0;
                do {
                    samplesIn += mRecordInstance.read(audioData, samplesIn,
                            bufferSize - samplesIn);

                    if (mRecordInstance.getRecordingState() == AudioRecord. RECORDSTATE_STOPPED)
                        break;
                } while (samplesIn < bufferSize);
                Log.d("Fingerprinter",
                        "Audio recorded: "
                                + (System.currentTimeMillis() - time)
                                + " millis");

                // see if the process was stopped. 
                if (mRecordInstance.getRecordingState() == AudioRecord. RECORDSTATE_STOPPED
                        || (! firstRun && ! this.continuous))
                    break;

                // debugging: print audioData short[]
                Log.d("Fingerprinter", "Audio Data Content:");

                // String audioDataContent = "";
                for (int i = 100; i < 110; i++) {
                    // audioDataContent = i + ":" + audioData[i];
                    Log.d("Fingerprinter", i + ":" + audioData[i]);
                }

                Log.d("Fingerprinter", "samplesIn: " + samplesIn);

                firstRun = false;

                didFinishListeningPass();
            } catch (Exception e) {
                e.printStackTrace();
                Log.e("Fingerprinter", e.getLocalizedMessage());

                didFailWithException(e);
            }
        } while (this.continuous);
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("Fingerprinter", e.getLocalizedMessage());

        didFailWithException(e);
    }

    if (mRecordInstance ! = null) {
        mRecordInstance.stop();
        mRecordInstance.release();
        mRecordInstance = null;
    }
    this.isRunning = false;

    didFinishListening();
}

A:

I found that I did in fact record some data - it was just the section I chose to display that only recorded zeros.  I prove this by summarizing all entries into the audioData array and dividing it by the number of entries into the array.  The result was -3.455619047619048.