使用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();
答案 0 :(得分:4)
MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED表示文件已达到最大大小; SD卡上可能有更多的空间,但有些东西禁止当前的录制文件增长。这通常是由于致电MediaRecorder.setMaxFileSize()。如果不调用此方法,则不会获得INFO,尽管可能在文件达到FAT文件系统的2GB限制时。
我找不到一个明确的答案,说明当你的空间用完时会发生什么;有些人似乎认为onError会被调用== MEDIA_RECORDER_ERROR_UNKNOWN。
换句话说,调用setMaxFileSize()的大小等于记录的几秒钟。那么你的回调应该有效。