3

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();
4

1 に答える 1

5

MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED は、ファイルが最大サイズに達したことを意味します。SD カードにはまだ空き容量があるかもしれませんが、現在の録画ファイルがこれ以上大きくなるのを何かが妨げています。これは通常、MediaRecorder.setMaxFileSize()の呼び出しが原因です。このメソッドを呼び出さないと、ファイルが FAT ファイル システムの 2GB 制限に達したときに情報を取得する可能性がありますが、情報は取得されません。

スペースがなくなったときに何が起こるかについては、明確な答えが見つかりません。onError は何 == MEDIA_RECORDER_ERROR_UNKNOWN で呼び出されると考える人もいるようです。

つまり、setMaxFileSize() を数秒の記録に等しいサイズで呼び出します。その後、コールバックが機能するはずです。

于 2012-12-01T06:53:45.150 に答える