Monday, April 8, 2013

[android help] A simple Real-Time Mic Meter in Android


I have helped from the book Pro Android media...


Here is the code:



public class MicMeter extends Activity implements OnClickListener {


RecordAudio recordTask;
int blocksize = 256;
int frequency = 8000;
int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
TextView txt;
Button start;
boolean started = false;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mic_meter);
start = (Button)findViewById(R.id.button1);
txt = (TextView)findViewById(R.id.textView1);

start.setOnClickListener(this);


}


private class RecordAudio extends AsyncTask {

@Override
protected Void doInBackground(Void... params) {
try{
int bufferSize = AudioRecord.getMinBufferSize(frequency,channelConfig,audioEncoding);
AudioRecord audioRecord = new AudioRecord( MediaRecorder.AudioSource.MIC, frequency, channelConfig, audioEncoding, bufferSize);

short[] buffer = new short[blocksize];
double[] meter = new double[blocksize];

audioRecord.startRecording();

while(started){
int bufferReadResult = audioRecord.read(buffer, 0, blocksize);

for (int i = 0; i < blocksize && i < bufferReadResult; i++) {
meter[i] = (double) buffer[i] / 32768.0; // signed 16 bit
}
publishProgress(meter);
}
audioRecord.stop();

}catch (Throwable t) {
Log.e("AudioRecord","RecordingFail");
}

return null;
}

@Override
protected void onProgressUpdate(double[]... meter) {

for(int i = 0 ; i < meter[0].length ; i++){
double helper = i;
txt.setText(Double.toString(helper));
}

}


}


@Override
public void onClick(View v) {
// TODO Auto-generated method stub

if(started){
recordTask.cancel(true);
}else{
started = true;
recordTask = new RecordAudio();
recordTask.execute();

}
}


}


while i press the button. It shows 255.0 and then it doesn't response... Are there any way to fix it?? Are there any beter version about this?


thank



.

stackoverflow.comm

No comments:

Post a Comment

Google Voice on T-Mobile? [General]

Google Voice on T-Mobile? So I recently switched from a GNex on Verizon to a Moto X DE on T-Mobile. I had always used Google Voice for my v...