У меня есть активное приложение в 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.Поскольку у меня нет этого устройства, я не могу его воспроизвести.