Android MediaRecorder стартира RuntimeException

С моето приложение можете да записвате кратки аудио коментари.

    final MediaRecorder recorder = new MediaRecorder();
    recorder.setMaxDuration(300000);
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    final String path = getOutputAudioFilePath(activity);
    recorder.setOutputFile(path);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    try {
        recorder.prepare();
    } catch (IOException e) {
        Toast.makeText(activity,e.getMessage(),Toast.LENGTH_LONG).show();
    }
    recorder.start();

Приложението стартира "java.lang.RuntimeException: setMaxDuration failed." с Galaxy S. Тествах тази функция на много устройства и те не стартират това изключение. Очевидно имам следното разрешение в xml манифеста

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Какъв е проблемът?


person fran    schedule 20.01.2014    source източник


Отговори (1)


В документацията се казва:

Задава максималната продължителност (в ms) на записващата сесия. Извикайте това след setOutFormat(), но преди подготви(). След като записът достигне определената продължителност, ще бъде изпратено известие до MediaRecorder.OnInfoListener с код „какво“ от MEDIA_RECORDER_INFO_MAX_DURATION_REACHED и записът ще бъде спрян. Спирането става асинхронно, няма гаранция, че записващото устройство ще е спряло, докато слушателят бъде уведомен.

Задавате максималната продължителност, преди да зададете outputFormat.

person Robin Dijkhof    schedule 20.01.2014