对于并行执行,我遇到了问题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 <<------
如果initial call = 1,则在两个用户之间传输数据,即发送和接收语音数据。
------>> 当Initiate call = 1时,传输数据
发送和接收语音数据<<------
播放音频数据有什么问题?
播放音频时出现语音延迟。发送和接收响应之间的时间太长,大约 400 毫秒到 600 毫秒。我需要做什么来解决这个问题?第一次持有 5 个数据块,当它收到 5 个音频数据时立即开始一个接一个地播放,如上面的代码所示。