我有一个操作,我从缓冲区读取数据,并且在传递数据之前需要对其进行修剪。 audioRecord.read()
返回可变数量的数据。
short[] data = new short[bufferSizeInBytes];
while (shouldRecord) {
int numberOfShortsRead = audioRecord.read(data, 0, data.length);
if (numberOfShortsRead > 0) {
// we are allocating memory here every time =\
short[] trimmed = new short[numberOfShortsRead];
System.arraycopy(data, 0, trimmed, 0, numberOfShortsRead);
doSomething(trimmed);
}
}
阅读一段时间后,我看到一些OutOfMemory
异常。如何有效执行此修剪,而不必为每个可能的修剪数组大小分配内存?