java - 异步任务 : Implementing executeOnExecutor() thread class in AudioTrack

标签 java android android-asynctask http-post audiotrack

我在使用 AsyncTask as 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 接到电话,Initiate call = 1 <<------

如果 initiate call = 1,则在两个用户之间传输数据,即发送和接收语音数据。

------>>当Initiate call = 1时,传输数据

发送和接收语音数据<<-------

播放音频数据有什么问题?

播放音频时出现语音延迟。发送和接收响应之间的时间过长,大约为 400 毫秒到 600 毫秒。我需要做什么来解决这个问题?第一次持有5个数据 block ,当它接收到5个音频数据时,立即依次开始播放,如上代码所示。

最佳答案

尝试将 5 个音频数据减少到 3 个? - 并不总是最好的主意,但它可以提供帮助。 带宽如何,是否足够传输舒适? 网络延迟如何?做一个 ping ,如果有 400 毫秒,那么你不能做太多。

关于java - 异步任务 : Implementing executeOnExecutor() thread class in AudioTrack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13207824/

相关文章:

java - 使用 PHP 从 Java 客户端上传文件不起作用

java - 如何在 Android 5 上修补 services.jar?

安卓教程 'HelloTabWidget'

java - 需要从 AsyncTask 返回值

java - AsyncTask新手问题

java - 为什么我的迭代器不工作?

java - AS400/RPG 中的舍入与 Java 中的舍入

android - 安装 firebase 插件后使用 cordova 运行应用程序时出现编译错误

java - 删除 UI 线程中已发送的消息

java - 方法句柄性能