我在錄製視頻時嘗試設置最大文件大小時遇到問題。 recorder.setMaxFileSize(long filesize_in_bytes)
的文檔說明了變量的長變量類型。我有一個方法返回long值的可用空間。當我嘗試將這個長變量設置爲參數時,它每次都會失敗。Media Recorder setMaxFileSize問題
自由空間法
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);
它的工作原理。
我錯過了什麼明顯的東西?
你是正確的另一個堆棧溢出的答案。這修正了變量只是自由空間。返回的值是29641244672,這在很長的值範圍內。它仍然失敗。 – Phobos 2011-05-31 07:28:03
您可能會遇到FAT32系統上的4GB文件大小限制問題。我不知道它是否有一個好的Android支持的方式,但如果你不需要比這更大的任何東西,請嘗試將它設置在4GB以下,看看它是否有效。 – Geobits 2011-05-31 07:32:17
我的解決方案是檢查可用空間,將其與最大文件大小(4000000000)進行比較併發送較小者。 – Phobos 2011-05-31 07:38:47