我正在构建一个相机应用程序,其中不断捕获视频并将其保存到 SD 卡中。视频很短(几分钟),它们的长度是用 setMaxDuration() 预设的。
整个过程运行良好,而主要活动在前台。但是,当我进行其他活动(例如设置)时,视频录制仅在后台工作,直到达到最大持续时间。文件已保存,但无法启动新序列,因为 prepare() 失败,显然是因为 setPreviewDisplay() 不喜欢没有合适的表面来附加。
我尝试使用虚拟 Surface、虚拟 SurfaceHolder、lockCanvas() 和其他各种技巧,但没有任何效果。有没有办法在没有有效表面的情况下初始化 MediaRecorder?