제가 지금 마이크에대고 말을하면 소리가 바로 장치에서 나오게하려고 하고있거든요... audiorecord 랑 audiotrack 은 대충설정 되있는데 이걸 ToggleButton 이 ON 되있을때 실행하려고하는게 좀 힘드네요 ;;

 

대충 이런식으로 되있거든요... 뭘 해야되는지좀 알려주세용 ㅠㅠ..

 

 public boolean tb = false;
   AudioRecord arec = null;
 AudioTrack atrack;
 ToggleButton tbs;
 static final int buffersize = 200000;
 final short[] buffer = new short[buffersize];
 short[] readBuffer = new short[buffersize];

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
    setContentView(R.layout.main);
  tbs = (ToggleButton) findViewById(R.id.tbS);
  tbs.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   public void onCheckedChanged(CompoundButton buttonView,
     final boolean isChecked) {
    // TODO Auto-generated method stub
    if (isChecked) {
     Thread thread = new Thread(new Runnable() {

      public void run() {
       tb = true;
       android.os.Process
         .setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);

       int bufferSize = AudioRecord.getMinBufferSize(
         11025,
         AudioFormat.CHANNEL_CONFIGURATION_MONO,
         AudioFormat.ENCODING_PCM_16BIT);

       arec = new AudioRecord(
         MediaRecorder.AudioSource.MIC, 11025,
         AudioFormat.CHANNEL_CONFIGURATION_MONO,
         AudioFormat.ENCODING_PCM_16BIT, bufferSize);
       atrack = new AudioTrack(
         AudioManager.STREAM_VOICE_CALL, 11025,
         AudioFormat.CHANNEL_CONFIGURATION_MONO,
         AudioFormat.ENCODING_PCM_16BIT, bufferSize,
         AudioTrack.MODE_STREAM);
       atrack.setPlaybackRate(11025);
       arec.startRecording();
       atrack.play();
       byte[] buffer = new byte[bufferSize];
       while (!tb) {
        arec.read(buffer, 0, bufferSize);
        atrack.write(readBuffer, 0, buffer.length);
       }
      }
     });
     thread.start();
    } else if (arec != null) {
     arec.stop();
     arec.release();
     arec = null;

    }

   }
  });