我在录制视频时尝试设置最大文件大小时遇到问题。 recorder.setMaxFileSize(long filesize_in_bytes)
的文档说明了参数的长变量类型。我有一个方法可以返回长值的可用空间。当我尝试将这个长变量设置为参数时,它每次都会失败。
自由空间法
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.
日志
05-31 00:30:28.201: ERROR/AndroidRuntime(17697): Caused by: java.lang.RuntimeException: setMaxFileSize failed.
但是,如果这样做 recorder.setMaxFileSize(5000000L);
它会起作用。
我错过了什么明显的东西?
最佳答案
使用 getAvailableBlocks()
而不是 getBlockCount()
。看起来您获得的是 SD 卡的总大小,而不是可用空间。
关于android - 媒体记录器 setMaxFileSize 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183393/