我正在Kotlin中开发一个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
:
ShortBuffer
。更快,最简单的选择是使用ShortArray
而不是ShortBuffer
。实际上,这对于录音部分是有效的,但是ShortArray
并不t provides me with the
rewind()`方法,我需要快速操作缓冲区。
关于为什么不能使用此构造函数的任何线索?有什么替代rewind()
的想法吗?谢谢!