android AudioRecord中的BufferSize减少了

时间:2015-12-02 17:12:30

标签: java android

我正在尝试将Android中的流式传输到服务器。我的程序工作正常。

开始流式传输的方法是:

 minBufSize = record.read(buffer,0,buffer.length);

停止录制的方法:

minBufSize

我正在使用

获取minBufSize
snprintf()

如果我继续停止并播放录音,snprintf(msgText, MAX_MSG_SIZE-1, "expr $((($(date +%s) - $(date +%s -r filename.txt)) / 86400))"); 会不断减少。 值从1280变为512到256到-3,最后我得到:

  

java.lang.NegativeArraySizeException:-3 at   com.example.khan.safevoicerecorder.MainActivity $ 1.run(MainActivity.java:81)

为什么会这样?请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您使用当前buffer创建minBufSize。然后,您的循环读取一段时间:minBufSize = record.read(buffer,0,buffer.length)。由于读取最多为buffer.length个字节,因此您现在可能已减少minBufSize

下次开始录制时,将使用新的较小的minBufSize创建缓冲区。同样,读取最多为buffer.length个字节(现在小于上次)。

冲洗并重复 - 最后,你会获得一个非常小的缓冲区。我猜这会给你-3误差值。最后,当minBufSize-3时,您的buffer分配将失败;数组不能有负数。