【发布时间】:2012-11-03 09:26:15
【问题描述】:
我在将 AsyncTask 与 executeOnExecutor() 并行执行时遇到问题,但在发送和接收音频时,我收到的声音有延迟(400 毫秒到 600 毫秒)。这是我的代码:
语音通话录音代码:
private void startRecording() {
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
RECORDER_SAMPLERATE, RECORDER_CHANNELS,
RECORDER_AUDIO_ENCODING, BufferElements * BytesPerElement);
recorder.startRecording();
isRecording = true;
/*
* Schedule a task for repeated fixed-rate execution after a specific
* delay has passed.
*/
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
bData = new short[BufferElements];
while (isRecording) {
// gets the voice output from microphone to byte format
/*
* Reads audio data from the audio hardware for recording
* into a buffer.
*/
recorder.read(bData, 0, BufferElements);
if (AudioRecord.ERROR_INVALID_OPERATION != 0) {
/* Send the audio voice data to server */
SendAudio();
}
}}, 0, 1);
}
两个用户之间通话时,如图所示先发起通话。
-------->> 从用户 1 呼叫用户 2 发起呼叫 = 0
如果user2接到呼叫,则发起呼叫= 1
如果发起呼叫 = 1,则在两个用户之间传输数据,即发送和接收语音数据。
-------->> 当Initiate call = 1时,传输数据
发送和接收语音数据
播放音频数据有什么问题?
在播放音频时出现语音延迟。发送和接收响应之间的时间太长,大约 400 毫秒到 600 毫秒。我需要做什么来解决这个问题?第一次持有5个数据块,当它收到5个音频数据后立即开始一个接一个地播放,如上代码所示。
【问题讨论】:
标签: java android android-asynctask http-post audiotrack