我正在创建一个屏幕捕获应用程序。 使用带有MediaProjection API的MediaRecorder
。停止记录器时出现运行时异常
这是停止屏幕捕获的代码
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)
问题出在模拟器上。它没有音频和视频源。
查看 android.developer doc
RuntimeException 被有意抛出到应用程序,如果在调用 stop(( 时没有收到有效的音频/视频数据。如果在 start(( 之后立即调用 stop((,就会发生这种情况。
溶液
将mediaRecorder.stop((函数放在try-catch块中