Исключение: неверный размер аудио буфера в некоторых устройствах - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть активное приложение в PlayStore, и недавно один смартфон обнаружил следующее исключение: Неверный размер аудио буфера на android.media.AudioTrack.audioBuffSizeCheck (AudioTrack.java:1151)

Вот так мой Audiotrack

    val rate = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_MUSIC)
    val minBufferSize = AudioTrack.getMinBufferSize(rate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT)

    val bufferSizes: IntArray = intArrayOf(1024, 2048, 4096, 8192, 16384, 32768)
    var size = 0

    for(i in bufferSizes){
        if (i > minBufferSize){
            size = i
            break
        }
    }

    // if buffer read size fails
    if (minBufferSize < 0) {
        size = rate * 2
    }

    // Create audio track
    val audioTrack = AudioTrack(
        AudioManager.STREAM_MUSIC, rate,
        AudioFormat.CHANNEL_OUT_MONO,
        AudioFormat.ENCODING_PCM_16BIT,
        size, AudioTrack.MODE_STREAM
    )

Приведенный выше код работает на 98% устройств.Но, например, Galaxy J4 Core разбился на audioBuffSizeCheck.Поскольку у меня нет этого устройства, я не могу его воспроизвести.

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