Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AudioRecorder класс. Не корректное поведение, Проблема с классом AudioRecorder 
:(
    Опции темы
MishanjaD
  Дата 4.8.2017, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 4.8.2017

Репутация: нет
Всего: нет



Всем привет форумчане!

Просто молю Вас о помощи с поиском причины следующей проблемы:

Имеем класс, задача которого во время входящего звонка начать запись звука, далее его преобразование и запись в PCM формате. 

Имеем класс startRecording() который выполняет сию функцию.

Проблема в том, что при вызове метода recorder.StartRecording()  метод recorder.getRecordingState()  ИНОГДА!!! возвращает нам RECORDERSTATE_STOPPED
 
Проблема заключается в том, что бывает 100 раз под ряд все работает хорошо, а бывает 40 хорошо, далее 20 раз не возможно начать запись - выходим из метода с дебаг логами, далее опять 40 хорошо. Никаких значимых влияющих факторов не нашел. Перезагрузка телефона помогает иногда. Иногда не помогает. Как видно из кода повторная инициализация не помогает. Повторная попытка запустить запись тоже.


   
Код

private void startRecording() {

        RLog.log(LogLevel.LOW, TAG, "startRecording()");

        //Create Recorder
        recorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_DOWNLINK, 44100,  // (Rx audio source)
                AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, BufferElements2Rec * BytesPerElement);
        //Check Recorder State
        if (recorder.getState() != AudioRecord.STATE_INITIALIZED) {
            recorder.release();
            recorder = null;
            log(LogLevel.LOW, TAG, "Audio preparation failed");
            return;
        }
        recorder.startRecording();
        log(LogLevel.LOW, TAG, "recorder.getRecordingState()" + recorder.getRecordingState());

        if(recorder.getRecordingState()==AudioRecord.RECORDSTATE_STOPPED){
            RLog.log(LogLevel.LOW, TAG, "AudioRecord.startRecording() failed. Try one more time");
            if(audioRecorderOneMoreTryFlag){
                recorder.release();
                recorder = null;
                audioRecorderOneMoreTryFlag = false;
                waitLoop(5);
                startRecording();
            }else{
                log(LogLevel.LOW, TAG, "AudioRecord object failed again. FAIL. ");

                //Debug info TODO: delete after fix
                log(LogLevel.LOW, TAG, "recorder.getRecordingState()" +recorder.getRecordingState());
                log(LogLevel.LOW, TAG, "recorder.getState()" +recorder.getState());
                log(LogLevel.LOW, TAG, "recorder.getAudioSessionId()" +recorder.getAudioSessionId());
                log(LogLevel.LOW, TAG, "recorder.getAudioSource" +recorder.getAudioSource());
             
                //EXIT 
                return;
               
       
            }
            return;
        }





В чем по Вашему может быть дело?  
Буду благодарен любой помощи !
PM MAIL   Вверх
iillyyaa2033
Дата 4.8.2017, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2017

Репутация: нет
Всего: нет



Сейчас развернутый ответ дать не успею; вкратце - мне помог этот ответ.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0976 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.