I just want get the audio input data, and draw a wave, but now I don't
know how to get audio data.
This is my code:
package com.fugui.fetal;
import java.nio.ByteBuffer;
import java.nio.ShortBuffer;
import android.app.Activity;
import android.content.Context;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.media.AudioRecord.OnRecordPositionUpdateListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Main extends Activity {
private final static int SAMPLE_RATE_IN_HZ = 8000;
private final static int BUFFER_SIZE = 20 * SAMPLE_RATE_IN_HZ;
AudioRecord audioRecord;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (audioRecord.getRecordingState() ==
AudioRecord.RECORDSTATE_RECORDING) {
audioRecord.stop();
((Button) v).setText("Start");
} else {
audioRecord.setRecordPositionUpdateListener(new
OnRecordPositionUpdateListener() {
public void
onMarkerReached(AudioRecord recorder) {
Log.i( "Hill" ,
"onMarkerReached") ;
recordParse();
}
public void
onPeriodicNotification(AudioRecord recorder) {
Log.i( "Hill",
"onPeriodicNotification" );
recordParse();
}
});
Log.i("Hill",
"setPositionNotificationPeriod Result: " +
audioRecord.setPositionNotificationPeriod(1000) );
//Log.i("Hill",
"setNotificationMarkerPosition Result: " +
audioRecord.setNotificationMarkerPosition(8000) );
audioRecord.startRecording();
((Button) v).setText("Stop");
recordParse();
}
}
});
init();
if( audioRecord.getState() != AudioRecord.STATE_INITIALIZED )
{
button.setEnabled( false );
((TextView) findViewById(R.id.TextOut)).setText( "Audio
Init
Failed.");
}
}
public void init() {
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
SAMPLE_RATE_IN_HZ,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
BUFFER_SIZE);
}
public void recordParse() {
short buffer[] = new short[8000 ];
((TextView) findViewById(R.id.TextOut)).setText( "Size: " +
audioRecord.read( buffer, 0, buffer.length ) + " Time:" +
System.currentTimeMillis() );
}
}
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en