start 和 stop的時候可能會IllegalStateException 處理的話我們可以捕捉 這裏記錄一下
try {
mMediaRecorder.prepare();
mMediaRecorder.start();
recordSuccessAction();
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
LogUtils.e(e.getMessage());
mMediaRecorder = null;//先重置爲null
prepareTakeVideoAndStart(filePath);//然後重新初始化即可,包括設置重新配置等等
}
...
if (mMediaRecorder != null) {
mMediaRecorder.setOnErrorListener(null);
mMediaRecorder.setOnInfoListener(null);
mMediaRecorder.setPreviewDisplay(null);
try {
mMediaRecorder.stop();
} catch (IllegalStateException e) {
e.printStackTrace();
exception = true;
mMediaRecorder = null;//重置爲null
mMediaRecorder = new MediaRecorder();//重新new對象
}
// mMediaRecorder.reset();
mMediaRecorder.release();
mMediaRecorder = null;
...
}
一般錄製時間過短容易出現這種情況,可以考慮做做防抖動