【发布时间】:2019-02-23 14:42:32
【问题描述】:
仍在尝试制作我的屏幕记录应用程序。我继续使用 MediaRecorder,正如我前段时间被告知的那样,所以我遇到了另一个问题。
我只需要初始化一个 MediaProjection 对象来使我的代码工作,这就是我在 onActivityResult() 中所做的,因为它是在this guide 中编写的:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RECORD_REQUEST_CODE && resultCode == RESULT_OK) {
mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data);
screenRecorder.setMediaProject(mediaProjection);
}
}
setMediaProjection() 看起来像
public void setMediaProject(MediaProjection project) {
mediaProjection = project;
}
,所以应该不会造成任何麻烦。
这就是我尝试调用 onActivityResult() 的方式:
/* start transmission */
if(screenRecorder.isRunning()) {
screenRecorder.stopRecord();
} else {
Intent captureIntent = mediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(captureIntent, RECORD_REQUEST_CODE);
}
有趣而疯狂的是,当我第一次启动调试时,它就成功了!在 startActivityForResult() 之后,我进入了 onActivityResult() 并初始化了 mediaProjection:我的手机向我显示了一个对话框窗口,无论我是否允许捕获屏幕,所以我允许了它并在我的屏幕上得到了一个特殊符号(类似屏幕的显示波形)状态栏。
但片刻之后,我在停止记录并重新启动调试会话以更准确地跟踪它时发现了一个问题。之后 onActivityResult() 被忽略:调用 startActivityForResult() ,显示对话窗口,但允许记录后 onActivityResult() 被完全跳过并且 mediaProjection 为空。使用相同的代码重新启动和重新安装 apk 并没有解决任何问题。
非常感谢您的任何建议。
【问题讨论】:
-
您是从片段或活动中调用
startActivityForResult吗? -
我的项目中没有片段。
标签: java android mediarecorder onactivityresult startactivityforresult