Android辅屏不支持投屏问题:多屏设备投屏实现方案咨询
你遇到的报错是因为尝试将系统原生的投屏授权Activity在辅屏启动,该系统Activity本身未适配辅屏启动属性,和你的应用是否有系统权限无关,你需要先在主屏完成授权流程,再执行辅屏捕获逻辑。
1、应用作为系统应用运行时,是否可以实现辅屏投屏
可以实现,需要满足以下要求:
- 在AndroidManifest.xml中为涉及的Activity添加
android:resizeableActivity="true"、android:supportsSizeChanges="true"属性,声明支持多屏显示 - 申请签名级权限:
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />(需要和系统签名一致才可正常获取) - 若适配Android 10及以下版本,可通过反射调用MediaProjection的隐藏API,绕过用户授权直接指定捕获对应辅屏的内容。
2、应用作为非系统应用运行时,是否可以实现辅屏投屏
Android 12及以上版本可以实现,Android 11及以下版本无法实现:
- Android 12开始官方开放了多屏捕获能力,非系统应用只要拿到用户的投屏授权,即可指定捕获对应的物理辅屏内容
- Android 11及更低版本中,非系统应用仅可捕获默认主屏的内容,没有权限访问辅屏的显示流。
3、调用MediaProjection.createVirtualDisplay创建虚拟显示屏时,是否可以指定display id
- 公开API不支持手动指定虚拟显示屏的display id,该id由系统自动分配管理
- 如果你是要捕获指定物理辅屏的内容:Android 12及以上版本可调用
MediaProjectionManager.createScreenCaptureIntent(Display display)方法,传入目标辅屏的Display实例请求授权,后续创建VirtualDisplay时捕获的就是该辅屏的内容 - 系统应用可通过反射调用隐藏API,在创建VirtualDisplay时指定要捕获的物理屏display id。
内容的提问来源于stack exchange,提问作者Viktor Apoyan
相关产品推荐
相关产品推荐

