2012-08-28 29 views
2

使用Android的錄製視頻MediaRecorder如何檢測並顯示Toast正在錄製的視頻文件達到其最大大小並且文件正在保存(或將要保存)時的消息?如何使用android的MediaRecorder檢測文件何時達到其最大尺寸?

編輯:這是我目前有的代碼,但回調沒有被觸發,雖然文件被成功保存。

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

''MediaRecorder.OnInfoListener''似乎有''MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED''錯誤信息,也許它給你意味着顯示一個Toast? – harism

+0

我添加了我目前擁有的代碼,但是當文件達到其最大大小時不會觸發回調。我哪裏出錯了? – spirytus

+0

Toast長度使用常量''2000'',也許你應該使用''Toast.LENGTH_SHORT''或''Toast.LENGTH_LONG''來代替? – harism

回答

3

MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED表示文件已達到其最大尺寸; SD卡上可能會有更多的空間,但是有些東西已經禁止了當前的錄製文件增長。這通常是由於致電MediaRecorder.setMaxFileSize()。如果您不調用此方法,則無法獲得INFO,儘管您可能會在文件達到FAT文件系統的2GB限制時使用該方法。

我找不到明確的答案,說明空間不足時會發生什麼;有些人似乎認爲onError將被調用== MEDIA_RECORDER_ERROR_UNKNOWN。

換句話說,調用setMaxFileSize()的大小等於幾秒的記錄。你的回調應該可以工作。