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

标签 java android file api 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();

最佳答案

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

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

换句话说,调用 setMaxFileSize() 的大小等于几秒的记录。您的回调应该会起作用。

关于java - 如何使用 android 的 MediaRecorder 检测文件何时达到其最大大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168736/

相关文章:

java - 将 PreBuiltTransportClient 与 elasticsearch 5 结合使用

java - Android PDF Writer (APW) 不显示 PDF

文件共享

ruby - 如何在 Ruby 中可逆地转义 URL 以便将其保存到文件系统

android - 如果我只请求读取权限,如何更改 Feed 对话框的受众。它默认为 "Only Me"

java - 在JAVA(Eclipse)中序列化文件时如何将编码设置为UTF8

java - 查询 DNS 服务记录以查找主机名和 TCP/IP

java - 如何通过eclipse控制台运行java代码?

Java XPath - 查找前缀为的标签

android - 如何防止我的应用程序获取 TimeZone.getDefault() 的缓存值?