//project package ~
import android.app.*;
import android.graphics.*;
import android.media.*;
import android.os.*;
import android.util.*;
import android.view.*;
import android.view.View.OnClickListener;
import android.widget.*;

//퍼미션<uses-permission android:name="android.permission.RECORD_AUDIO"/>
public class AudioProcessingActivity extends Activity implements OnClickListener {
 boolean started = false;
 RecordAudio recordTask;

 ImageView imageView;
 Bitmap bitmap;
 Canvas canvas;
 Paint paint;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main); //main : 주 UI XML 파일명

  final Button startStopButton =
                           (Button) findViewById(R.id.StartStopButton);
  startStopButton.setOnClickListener(this);

  // ImageView 및 관련 객체 설정 부분
  imageView = new ImageView(this);
  bitmap = Bitmap.createBitmap((int) 256, (int) 100,
    Bitmap.Config.ARGB_8888);//256 x 100 크기의 비트맵생성
  canvas = new Canvas(bitmap);
  paint = new Paint();
  paint.setColor(Color.GREEN);
  imageView.setImageBitmap(bitmap);  
  ((LinearLayout) findViewById(R.id.LinearLayout1)).addView(imageView);
 }

 
 private class RecordAudio extends AsyncTask<Void, short[], Void> {
  final int 샘플링주파수 = 8000;
 final int 녹음채널수 = AudioFormat.CHANNEL_CONFIGURATION_MONO; //Mono : 1개 , Streo : 2개
 final int 인코딩방식 = AudioFormat.ENCODING_PCM_16BIT; //양자화 방식  & 녹음방식
 
  @Override
  protected Void doInBackground(Void... params) {
   try {
   
    int bufferSize = AudioRecord.getMinBufferSize(샘플링주파수, 녹음채널수, 인코딩방식);
final int blockSize = bufferSize ;//버퍼에서 한번에 읽어올 크기
    AudioRecord audioRecord = new AudioRecord( MediaRecorder.AudioSource.MIC, 샘플링주파수,
               녹음채널수, 인코딩방식 , bufferSize);

    short[] buffer = new short[blockSize]; //샘플링된 데이터가 이곳에 담김.
   
    audioRecord.startRecording();

    while (started) {
     int bufferReadResult =
                                       audioRecord.read(buffer, 0, blockSize); 
     // publishProgress를 호출하면 onProgressUpdate가 호출된다.
     publishProgress(buffer);
    }

    audioRecord.stop();
   } catch (Throwable t) {
    Log.e("AudioRecord", "Recording Failed");
   }

   return null;
  }

  // onProgressUpdate는 우리 엑티비티의 메인 스레드로 실행된
  // 인터페이스와 상호작용할 수 있다.
 
  @Override
  protected void onProgressUpdate(short []... buffer) {
   canvas.drawColor(Color.BLACK);
                       double scale =
                              (double)canvas.getHeight()/Short.MAX_VALUE;
   for (int i = 0; i < buffer[0].length; i++) {
                         int xloc = i + 50 ;
                         int yloc = (int)(canvas.getHeight()/2
                                                + scale .*buffer[0][i]);
                        canvas.drawLine(xloc,yloc-1,xloc,yloc+1);
   }
   imageView.invalidate();
  }
 }

 @Override
 public void onClick(View arg0) {
  final Button startStopButton
                    = (Button) findViewById(R.id.StartStopButton);
  if (started) {
   started = false;
   startStopButton.setText("Start");
   recordTask.cancel(true);
  } else {
   started = true;
   startStopButton.setText("Stop");
   recordTask = new RecordAudio();
   recordTask.execute();
  }
 }
}


이소스를 가지고 마이크 입력 처리를 할려고하는데 무엇을 어떻게 해야 할지 모르겠습니다. ㅠ

답변좀 부탁드립니다 .