Android
Android ビデオ録画機能を作る
Android 録画中、最大サイズや時間を超えたらどうするか実装する
Androidでビデオ録画機能を作る時に気をつけたいこと
Android ビデオを録画するサンプルコード
などでビデオの録画方法について書いておりますが、録画中にありえることとして、たとえばユーザーがビデオを録画しっぱなしにしてしまったりすることもありえます。
その時に、スマホのストレージ以上をむやみに圧迫してしまってはいけないですよね。
MediaRecorderではビデオファイルの最大サイズや、録画時間の最長時間を決めておくことができます。
if(mrec == null){ mrec = new MediaRecorder(); mrec.setOnInfoListener(this); mrec.setOnErrorListener(this); } //サイズ long max_file_size = 5368709120L; //5G mrec.setMaxFileSize(max_file_size); mrec.setMaxDuration(600000); //10分
これで、5Gを超えた録画、あるいは10分を超えた録画は、次のリスナーで受け取れます。
//OnInfoListener、OnErrorListenerのリスナーを実装しておく public class VideoActivity extends implements SurfaceHolder.Callback, MediaRecorder.OnInfoListener, MediaRecorder.OnErrorListener{ //中略 @Override public void onInfo(MediaRecorder mr, int what, int extra) { Log.e(TAG, "インフォ:" + extra); String detail = null; if(what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED ){ detail = "録画の最大時間を超えました"; }else if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED ){ detail = "録画の最大サイズを超えました"; } showDialog(alertDialog, getString(R.string.record_warning), detail +getString(R.string.please_tap_stop_and_restart) +" what:"+what + " extra:" + extra, HogeActivity.this); stopVideoRecording(); } @Override public void onError(MediaRecorder mr, int what, int extra) { Log.e(TAG, "エラー:" + extra); howDialog(alertDialog, getString(R.string.recording_error), getString(R.string.please_tap_stop_and_restart) + "what:"+what + " extra:" + extra, HogeActivity.this); stopVideoRecording(); }