Kotlin AudioRecord和AudioTrack Android中的Java ShortBuffer

时间:2019-03-19 22:33:08

标签: java android kotlin

我正在Kotlin中开发一个Android应用程序,该应用程序使用AudioRecordAudioTrack类,并且我需要使用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

    在android.media.AudioRecord中定义的
  • read(ByteBuffer !, Int,Int)
  • 在android.media.AudioRecord中定义的
  • read(ByteArray !, Int,Int)
  • android.media.AudioRecord中定义的
  • read(ShortArray !, Int,Int) 此构造函数的Java版本确实允许ShortBuffer

更快,最简单的选择是使用ShortArray而不是ShortBuffer。实际上,这对于录音部分是有效的,但是ShortArray并不t provides me with the rewind()`方法,我需要快速操作缓冲区。

关于为什么不能使用此构造函数的任何线索?有什么替代rewind()的想法吗?谢谢!

0 个答案:

没有答案