Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 25 апр 2018, 09:44

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 04 авг 2017, 10:27 

Зарегистрирован: 04 авг 2017, 10:23
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Всем привет форумчане!

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

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

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

Проблема в том, что при вызове метода recorder.StartRecording() метод recorder.getRecordingState() ИНОГДА!!! возвращает нам RECORDERSTATE_STOPPED.

Проблема заключается в том, что бывает 100 раз под ряд все работает хорошо, а бывает 40 хорошо, далее 20 раз не возможно начать запись - выходим из метода с дебаг логами, далее опять 40 хорошо. Никаких значимых влияющих факторов не нашел. Перезагрузка телефона помогает иногда. Иногда не помогает. Как видно из кода повторная инициализация не помогает. Повторная попытка запустить запись тоже.


Код: [ Загрузить ] [ Скрыть ]
  1. private void startRecording() { 
  2.  
  3.         RLog.log(LogLevel.LOW, TAG, "startRecording()"); 
  4.  
  5.         //Create Recorder 
  6.         recorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_DOWNLINK, 44100,  // (Rx audio source) 
  7.                 AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, BufferElements2Rec * BytesPerElement); 
  8.         //Check Recorder State 
  9.         if (recorder.getState() != AudioRecord.STATE_INITIALIZED) { 
  10.             recorder.release(); 
  11.             recorder = null; 
  12.             log(LogLevel.LOW, TAG, "Audio preparation failed"); 
  13.             return; 
  14.         } 
  15.         recorder.startRecording(); 
  16.         log(LogLevel.LOW, TAG, "recorder.getRecordingState()" + recorder.getRecordingState()); 
  17.  
  18.         if(recorder.getRecordingState()==AudioRecord.RECORDSTATE_STOPPED){ 
  19.             RLog.log(LogLevel.LOW, TAG, "AudioRecord.startRecording() failed. Try one more time"); 
  20.             if(audioRecorderOneMoreTryFlag){ 
  21.                 recorder.release(); 
  22.                 recorder = null; 
  23.                 audioRecorderOneMoreTryFlag = false; 
  24.                 waitLoop(5); 
  25.                 startRecording(); 
  26.             }else{ 
  27.                 log(LogLevel.LOW, TAG, "AudioRecord object failed again. FAIL. "); 
  28.  
  29.                 //Debug info TODO: delete after fix 
  30.                 log(LogLevel.LOW, TAG, "recorder.getRecordingState()" +recorder.getRecordingState()); 
  31.                 log(LogLevel.LOW, TAG, "recorder.getState()" +recorder.getState()); 
  32.                 log(LogLevel.LOW, TAG, "recorder.getAudioSessionId()" +recorder.getAudioSessionId()); 
  33.                 log(LogLevel.LOW, TAG, "recorder.getAudioSource" +recorder.getAudioSource()); 
  34.               
  35.                 //EXIT  
  36.                 return; 
  37.                 
  38.         
  39.             } 
  40.             return; 
  41.         } 
  42.  



В чем по Вашему может быть дело?
Буду благодарен любой помощи !


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 ноя 2017, 23:20 
Аватар пользователя

Зарегистрирован: 15 сен 2017, 22:56
Сообщений: 16
Откуда: Russ
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
может он еще не успел стартануть?
может в цикле с паузой попробовать проверить состояние раз нескооько?

_________________
www.gorodservis.ru


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB