제가 지금 마이크에대고 말을하면 소리가 바로 장치에서 나오게하려고 하고있거든요... 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;
}
}
});




onCreate()에는 생성자만 넣으시구요.
Toggle버튼 리스너 안에는 {ar.startRecording(), at.start()} 혹은 {ar.stop(), at.stop()}만 해주세요