Я разрабатываю приложение для Android в Котлине, которое использует классы AudioRecord и AudioTrack , и мне нужно использовать ShortBuffer для выполнения некоторыхоперации, особенно потому, что мне нужен метод rewind()
из ShortBuffer
.
Мой код выглядит следующим образом:
private var audioBuffer: ShortBuffer? = null
// Then, inside a dedicated thread I allocate memory for the buffer
audioBuffer = ShortBuffer.allocate(bufferSize / 2)
// And here comes the problem I've been dealing with:
while (recordAudio) {
val shortsReaded = audioRecord.read(audioBuffer, 0, audioBuffer!!.array().size)
shortsRead += numberOfShort
}
Это строка, которая завершается ошибкой: val shortsReaded = audioRecord.read(audioBuffer, 0, audioBuffer!!.array().size)
, потому что конструкторПозволяет только построить AudioRecord
со следующими параметрами:
- read (ByteBuffer !, Int, Int), определенный в android.media.AudioRecord
- read (ByteArray !,Int, Int) определено в android.media.AudioRecord
- read (ShortArray !, Int, Int) определено в android.media.AudioRecord Java-версия этого конструктора допускает
ShortBuffer
.
Самый быстрый и простой вариант - использовать ShortArray
вместо ShortBuffer
.Это на самом деле работает для записывающей части, но ShortArray
не поддерживает t provides me with the
rewind () `метод, который мне нужен для быстрой работы с буфером.
Любая подсказка, почему я не могу использовать этот конструктор?Есть идеи для альтернативы rewind()
?Спасибо!