Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package simple.love;
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.ServiceConnection;
- import android.media.AudioFormat;
- import android.media.AudioRecord;
- import android.media.MediaRecorder;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.IBinder;
- import android.os.Message;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class Simple extends Activity {
- SimpleService mBoundRecService;
- Button start,end;
- VolumeMeter volumeMeter;
- BackgroundRecorder recorder;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- volumeMeter = (VolumeMeter)findViewById(R.id.volume_meter);
- start = (Button) findViewById(R.id.sbut);
- end = (Button) findViewById(R.id.ebut);
- end.setOnClickListener(new OnClickListener(){
- public void onClick(View v) {
- recorder.isRecording = false;
- start.setVisibility(View.VISIBLE);
- end.setVisibility(View.GONE);
- }
- });
- start.setOnClickListener(new OnClickListener(){
- public void onClick(View v) {
- recorder = new BackgroundRecorder(new ClickHandler());
- recorder.execute();
- start.setVisibility(View.GONE);
- end.setVisibility(View.VISIBLE);
- }
- });
- }
- public class BackgroundRecorder extends AsyncTask<String,String,String> {
- Handler handler;
- boolean isRecording;
- BackgroundRecorder(Handler handler) {
- this.handler = handler;
- }
- @Override
- protected String doInBackground(String... params) {
- isRecording=true;
- int audioBuf = AudioRecord.getMinBufferSize(44100,
- AudioFormat.CHANNEL_CONFIGURATION_MONO,
- AudioFormat.ENCODING_PCM_16BIT) * 2;
- // Set up the audio input.
- AudioRecord audioInput = new AudioRecord(MediaRecorder.AudioSource.MIC,
- 44100,
- AudioFormat.CHANNEL_CONFIGURATION_MONO,
- AudioFormat.ENCODING_PCM_16BIT,
- audioBuf);
- while(audioInput.getState() != AudioRecord.STATE_INITIALIZED){}
- audioInput.startRecording();
- byte[] read = new byte[audioBuf];
- while(isRecording) {
- audioInput.read(read, 0, read.length);
- Message powerMsg = new Message();
- float sigPower = SignalUtil.calcSigPower(read, 0, read.length);
- Bundle powerBundle = new Bundle();
- powerBundle.putFloat("power", sigPower);
- System.out.println("power" + sigPower);
- powerMsg.setData(powerBundle);
- handler.sendMessage(powerMsg);
- }
- audioInput.stop();
- return null;
- }
- }
- public class ClickHandler extends Handler {
- @Override
- public void handleMessage(Message msg) {
- volumeMeter.update(msg.getData().getFloat("power"));
- volumeMeter.invalidate();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement