如何使用android的MediaRecorder检测文件何时达到最大大小?

时间:2012-08-28 23:01:36

标签: java android file api mediarecorder

使用Android MediaRecorder录制视频时,如果正在录制的视频文件达到最大大小并且文件正在保存(或即将保存)时如何检测并显示Toast消息?

编辑:这是我目前拥有的代码,但是虽然文件已成功保存,但未触发回调。

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();

1 个答案:

答案 0 :(得分:4)

MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED表示文件已达到最大大小; SD卡上可能有更多的空间,但有些东西禁止当前的录制文件增长。这通常是由于致电MediaRecorder.setMaxFileSize()。如果不调用此方法,则不会获得INFO,尽管可能在文件达到FAT文件系统的2GB限制时。

我找不到一个明确的答案,说明当你的空间用完时会发生什么;有些人似乎认为onError会被调用== MEDIA_RECORDER_ERROR_UNKNOWN。

换句话说,调用setMaxFileSize()的大小等于记录的几秒钟。那么你的回调应该有效。