Media Recorder setMaxFileSize问题

时间:2011-05-31 05:32:58

标签: android video record

我在尝试录制视频时设置最大文件大小时遇到​​问题。 recorder.setMaxFileSize(long filesize_in_bytes)的文档说明了参数的长变量类型。我有一个方法,返回长值的可用空间。当我尝试将这个long变量设置为参数时,它每次都会失败。

自由空间方法

public long freeSpace(){
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long free = (long)stat.getBlockSize() *(long)stat.getBlockCount();
Log.w("FREESPACE METHOD", "Free space on SD card: "+free);
return free;
}

摘录媒体记录器方法

long spaceFree = freeSpace();
recorder.setblahblah
recorder.setMaxFileSize(spaceFree);  //Fails right here.

logcat的

05-31 00:30:28.201: ERROR/AndroidRuntime(17697): Caused by: java.lang.RuntimeException: setMaxFileSize failed.

但是,如果这样做recorder.setMaxFileSize(5000000L);就行了。

我遗失了哪些明显的东西?

2 个答案:

答案 0 :(得分:1)

使用getAvailableBlocks()代替getBlockCount()。看起来你得到的是SD卡的总大小,而不是可用空间。

答案 1 :(得分:0)

我找到了答案。我忘了FAT文件系统的最大文件大小为4 GB。因此,如果您像现在这么多用户那样使用大卡,则可能有超过4GB的可用空间。这是文件系统限制。

here

还有另一个堆栈溢出答案