Java ShortBuffer в Kotlin AudioRecord и AudioTrack Android - PullRequest
0 голосов
/ 20 марта 2019

Я разрабатываю приложение для 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()?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...