2015-06-10 6 views
2

Возможно ли изменить источник MediaRecorder, чтобы разрешить паузу/возобновить запись? Я думал, что изменить этот класс было невозможно, но недавно мне сказали, что это так. У меня есть вопрос: зачем мне изменять класс MediaRecorder и просто не расширять его, а затем писать дополнительную логику? Базовая логика Я хотел бы добавить к Приостановка/возобновление записи будет идти-то вроде этого,Как я могу изменить источник MediaRecorder, чтобы разрешить запись паузы/возобновления

public void pauseRecording() 
{ 
    media_recorder.stop(); 
    media_recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    media_recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    media_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    FileOutputStream paused_file = new FileOutputStream(file_path); 
    media_recorder.setOutputFile(paused_file.getFD()); 
} 

public void resumeRecording() 
{ 
    media_recorder.prepare(); 
    media_recorder.start(); 
} 

Проблема с этим состоит в том, что предварительный мерцает. Поэтому у меня есть по существу три вопроса. Можно ли напрямую изменить исходный код? Что-то не так с моим распространением MediaRecorder? И как я могу обновить свою паузу/резюме, чтобы не было мерцания предварительного просмотра? Заранее спасибо.

ответ

1
  1. Вы можете изменить исходный код, проблема в том, что вы не можете скомпилировать исходный код фрейма в свой apk и заменить фреймворк во время выполнения. поэтому не делать этого.
  2. Вы используете один файл для записи каждой части? вам нужно записать каждую часть в разделенные файлы, или «предварительный мерцание» произойдет.
  3. Если вы хотите связаться со всеми частями в одном файле, вам необходимо записать в формате PCM (или вам нужно обработать файл заголовком самостоятельно) и убедитесь, что динамик добавляет тишину до и после каждой части.

 Смежные вопросы

  • Нет связанных вопросов^_^