3

在使用 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();
4

1 回答 1

5

MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED 表示文件已达到最大大小;SD卡上可能还有更多空间,但是某些东西阻止了当前录制文件变得更大。这通常是由于调用MediaRecorder.setMaxFileSize() 所致。如果你不调用这个方法,你将不会得到 INFO,尽管当文件达到 FAT 文件系统的 2GB 限制时你可能会得到。

关于空间不足时会发生什么,我找不到明确的答案。有些人似乎认为 onError 会被调用 == MEDIA_RECORDER_ERROR_UNKNOWN。

所以换句话说,调用 setMaxFileSize() 的大小等于几秒的记录。您的回调应该可以工作。

于 2012-12-01T06:53:45.150 回答