使用 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 并在录制过程中处理每个录制的帧?

mediaprojection : 在某些情况下黑屏

如何使用节点 js 从后端 API 请求 apikey?

android Q中无法识别MediaProjection服务类型

如何使用rxjs从后端api获取头属性?