Search code examples
androidfilevideomediarecorder

How to know when MediaRecorder has finished writing data to file


We're using MediaRecorder to record video to a file on the external storage using setOutputFile() before doing the actual recording.

Everything works fine, but the main issue is that as soon as the recording is done, we want to start playing the recorded video back in a VideoView.

How to know when the file is ready to be read and played back?


Solution

  • The FileObserver class suits your needs perfectly. Here is the documentation. It's easy to use. When a observed file is closed after writing, the onEvent callback is called with CLOSE_WRITE as the parameter.

    MyFileObserver fb = new MyFileObserver(mediaFile_path, FileObserver.CLOSE_WRITE);
    fb.startWatching();
    
    class MyFileObserver extends FileObserver {
    
        public MyFileObserver (String path, int mask) {
            super(path, mask);
        }
    
        public void onEvent(int event, String path) {
            // start playing
        }
    }
    

    Don't forget to call stopWatching().