У меня есть операция, где я читаю данные из буфера, и мне нужно их обрезать перед передачей. 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
исключения после прочтения некоторое время. Как я могу эффективно выполнить эту обрезку без необходимости выделять память для каждого возможного обрезанного размера массива?