2012-08-28 5 views
2

Во время записи видео с Android MediaRecorder как обнаружить и отобразить сообщение Toast, когда записываемый видеофайл достиг своего максимального размера, и файл сохраняется (или собирается его сохранить)?Как определить, когда файл достиг максимального размера с помощью MediaRecorder от android?

EDIT: Это код, который у меня есть, но обратный вызов не запускается, хотя файл успешно сохраняется.

final Context activity=this.getBaseContext(); 

mediaRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() { 

    public void onInfo(MediaRecorder mr, int what, int extra) { 
    // TODO Auto-generated method stub 

    if(what==MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED) 
     Toast.makeText(activity, "There is no more space available. Video recording is stopped now.",2000).show(); 

    } 
}); 

// getBytesAvailable() returns bytes available on sdcard 
mediaRecorder.setMaxFileSize(getBytesAvailable()); 

mediaRecorder.prepare(); 
+0

'' MediaRecorder.OnInfoListener', похоже, имеет сообщение об ошибке '' MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED'', возможно, оно дало вам средства для отображения тоста? – harism

+0

Я добавил код, который у меня есть на данный момент, но обратный вызов не запускается, когда файл достигает своего максимального размера. Где я ошибаюсь? – spirytus

+0

Вы используете постоянное значение '' 2000'' для длины Toast, возможно, вместо этого вы должны использовать 'Toast.LENGTH_SHORT'' или' Toast.LENGTH_LONG''? – harism

ответ

3

MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED означает, что файл достиг максимального размера; на SD-карте может быть больше места, но что-то запретило, чтобы текущий файл записи увеличивался. Обычно это вызвано вызовом MediaRecorder.setMaxFileSize(). Если вы не вызываете этот метод, вы не получите INFO, хотя вы можете, когда файл достигнет предела 2 ГБ файловой системы FAT.

Я не могу найти четкого ответа относительно того, что происходит, когда вы исчерпаете пространство; некоторые люди, похоже, думают, что onError будет вызван тем, что == MEDIA_RECORDER_ERROR_UNKNOWN.

Другими словами, вызовите setMaxFileSize() с размером, равным нескольким секундам записи. Тогда ваш обратный вызов должен работать.

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

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