我正在创建一个Screen Capturing App。将MediaRecorder与MediaProjection API一起使用。
在停止录像机时获取运行时异常
这是停止屏幕捕获的代码
private void stop_recorder() {
if (virtualDisplay == null) {
return;
}
virtualDisplay.release();
if (mediaProjection != null) {
mediaProjection.unregisterCallback(projectionCallback);
mediaProjection.stop();
mediaProjection = null;
}
if (recorder != null) {
recorder.stop();
recorder.reset();
}
}
发生异常是
E/MediaRecorder: stop failed: -1007 java.lang.RuntimeException: stop failed. at android.media.MediaRecorder.stop(Native Method)
问题在于模拟器。它没有音频和视频源。
如果在调用stop()时没有收到有效的音频/视频数据,则会故意将RuntimeException抛出到应用程序。如果在start()之后立即调用stop(),则会发生这种情况。
解
将mediaRecorder.stop()函数放在try-catch块中