private class RecordAudio extends AsyncTask<Void, Integer, Void> {
protected Void doInBackground(Void... params) {
isRecording = true;
try {
serverSocket = new DatagramSocket();
int bufferread = 0;
int buffersize = AudioRecord.getMinBufferSize(DATA_DIC.frequency, DATA_DIC.channelconfiguration, DATA_DIC.audioencoding);
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, DATA_DIC.frequency,
DATA_DIC.channelconfiguration, DATA_DIC.audioencoding, buffersize);
short[] buffer = new short[buffersize];
audioRecord.startRecording();
// int r=0;
while (isRecording) {
int bufferreadresult = audioRecord.read(buffer, 0, buffersize);
byte[] buf = new byte[4096];
for (int i = 0; i < bufferreadresult; i++) {
String ss = String.valueOf((int) buffer[i]);
buf = ss.getBytes();
// packet = new DatagramPacket(buf, buf.length, InetAddress.getByName(Util.getLocalIpAddress()), DATA_DIC.UDP_PORT);
packet = new DatagramPacket(buf, buf.length, clientAddr, DATA_DIC.UDP_PORT_AUDIO);
serverSocket.send(packet);
Log.d("RecordAudio", ""+i);
}
}
audioRecord.stop();
} catch (Throwable t) {
Log.e("AudioRecord", "Recording Failed");
}
return null;
}
}
private class PlayAudio extends AsyncTask<Void, Integer, Void> {
protected Void doInBackground(Void... params) {
isPlaying = true;
byte[] buf = new byte[4096];
int buffersize = AudioTrack.getMinBufferSize(DATA_DIC.frequency, DATA_DIC.channelconfiguration,
DATA_DIC.audioencoding);
short[] audiodata = new short[buffersize];
try {
socket = new DatagramSocket(DATA_DIC.UDP_PORT_AUDIO);
receivepacket = new DatagramPacket(buf, buf.length);
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, DATA_DIC.frequency,
DATA_DIC.channelconfiguration, DATA_DIC.audioencoding, buffersize, AudioTrack.MODE_STREAM);
audioTrack.play();
while (isPlaying) {
for (int i = 0; i < audiodata.length; i++) {
socket.receive(receivepacket);
String temp = new String(buf, 0, receivepacket.getLength());
audiodata[i] = Short.parseShort(temp);
Log.d(tag, "PlayAudio"+i);
}
audioTrack.write(audiodata, 0, audiodata.length);
}
startUDP("audio 확인완료");
} catch (Exception ex) {
Log.e("udpreceiver", "s:error");
}
Log.d(tag, "audioThread");
return null;
}
}
public static final int frequency = 44100;
public static final int channelconfiguration = AudioFormat.CHANNEL_IN_MONO;
public static final int audioencoding = AudioFormat.ENCODING_PCM_16BIT;
지금 단말끼리 무전기처럼 구현해보려고 하는데요 지금상황은 전달하고자하는 폰에서 말을하면 듣는 폰에서는 한 5초 정도? 뒤에 소리가 한번 들리고 마는데 소리가 제대로 가는건지 아니면 소리가 듣는데서 잘못된건지 감을 못잡겠습니다 ㅠㅠ 한번들리는것도 한음 득! ? 이런 소리 ㅎㅎㅎ 큰소리로 말하면 들리는 소리가 커지고 작게 말하면 들리는 소리가 작은거같아서 말한게 한꺼번에 몰아서 오는것같기도 한데 ㅠㅠ 다른분들은 다하던데 도와주세요~