@Dmtm
Android

Как вызвать исключение при обращении к AudioRecord?

пока не могу проверить на реальном устройстве, только эмуляторы, API 28,29, разрешение на микрофон не выдано
var recorder: AudioRecord? = null
        try {
            val minBufferSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT)

            require(!(minBufferSize == AudioRecord.ERROR || minBufferSize == AudioRecord.ERROR_BAD_VALUE))
            recorder = AudioRecord(
                    MediaRecorder.AudioSource.VOICE_COMMUNICATION,
                    8000,
                    AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT,
                    minBufferSize * 10)

            // Wait until audio record is initialized.
            var waitCycles = 20
            while (recorder.state != AudioRecord.STATE_INITIALIZED && waitCycles > 0) {
                Thread.sleep(250)
                waitCycles -= 1
            }
            if (recorder.state != AudioRecord.STATE_INITIALIZED) {
                throw Exception("Unable to initialize AudioRecord instance")
            }

            return recorder

я ожидаю что при создании AudioRecord должно сработать SecurityException, но получаю просто неинициализированный AudioRecord, как вызвать SecurityException?
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
@Dmtm Автор вопроса
Android
это баг в API, древний код рекордера никто не собирается переписывать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы