使用 MediaProjection API 从后台服务记录:这种方法是唯一可能的吗?
Posted
技术标签:
【中文标题】使用 MediaProjection API 从后台服务记录:这种方法是唯一可能的吗?【英文标题】:Record from a from a background-service using MediaProjection API: is this kind of approach the only one possible? 【发布时间】:2021-11-30 13:23:38 【问题描述】:Intent dialogIntent = new Intent(BackgroundService.this, ScreenShotActivity.class); dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(dialogIntent);
我想问你是否从后台服务启动活动ScreenShotActivity.class
(这是MediaProjection
实现的类)是记录屏幕上发生的一切的唯一方法。
来源:How to take a Screenshot from a background-service class using MediaProjection API?
或者是否可以在服务本身内部实现 MediaProjection API 的所有内容,而无需“util”活动?
【问题讨论】:
【参考方案1】:是否可以在服务本身内部实现 MediaProjection API 的所有内容,而不需要“util”活动?
没有。用户需要同意允许您的应用程序录制屏幕,系统提供的对话框会通过startActivityForResult()
显示。这反过来又需要一个活动。
【讨论】:
所以最好的方法是等待在活动中启动的录制结束,然后启动服务并对服务内的视频录制执行操作? @zaxunobi:录制本身可以完全在服务中完成,但是您需要startActivityForResult()
调用的结果才能开始录制。 This sample app 很旧,但它演示了基本技术。以上是关于使用 MediaProjection API 从后台服务记录:这种方法是唯一可能的吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MediaProjection API 从后台服务类中截取屏幕截图?
是否可以使用 MediaProjection API 并在录制过程中处理每个录制的帧?