如何使用 android 的 MediaRecorder 检测文件何时达到最大大小?

spi*_*tus 3 java api android file mediarecorder

使用 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();
Run Code Online (Sandbox Code Playgroud)

小智 5

MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED 表示文件已达到最大大小;SD 卡上可能有更多空间,但某些因素禁止当前录音文件变得更大。这通常是由于调用MediaRecorder.setMaxFileSize()造成的。如果不调用此方法,您将不会获得 INFO,尽管当文件达到 FAT 文件系统的 2GB 限制时您可能会获得该信息。

对于空间不足时会发生什么,我找不到明确的答案;有些人似乎认为 onError 会被调用为 == MEDIA_RECORDER_ERROR_UNKNOWN。

换句话说,调用 setMaxFileSize() ,其大小等于几秒的记录。那么你的回调应该可以工作。