Android 録画中、最大サイズや時間を超えたらどうするか実装する

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

	

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です