我正在尝试将Android中的流式传输到服务器。我的程序工作正常。
开始流式传输的方法是:
minBufSize = record.read(buffer,0,buffer.length);
停止录制的方法:
minBufSize
我正在使用
获取minBufSizesnprintf()
如果我继续停止并播放录音,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)
为什么会这样?请帮我解决这个问题。
答案 0 :(得分:1)
您使用当前buffer
创建minBufSize
。然后,您的循环读取一段时间:minBufSize = record.read(buffer,0,buffer.length)
。由于读取最多为buffer.length
个字节,因此您现在可能已减少minBufSize
。
下次开始录制时,将使用新的较小的minBufSize
创建缓冲区。同样,读取最多为buffer.length
个字节(现在小于上次)。
冲洗并重复 - 最后,你会获得一个非常小的缓冲区。我猜这会给你-3误差值。最后,当minBufSize
为-3
时,您的buffer
分配将失败;数组不能有负数。