在BeamPro中尝试创建SECURE标记的虚拟屏报错

VirtualDisplay virtualDisplay = mediaProjection.createVirtualDisplay(“ScreenCapture”,
width,
height,
metrics.densityDpi,
DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC | DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE | DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION,
surface,
null,
null);

报错信息:AndroidJavaException: java.lang.SecurityException: Requires CAPTURE_SECURE_VIDEO_OUTPUT or an appropriate MediaProjection token to create a secure virtual display.

问题是我已经获取了屏幕录制权限了,依旧报错:

我是用的这里获取权限后的mediaProjection去创建SECURE标记的屏幕的,至于我为什么要这个标记是因为我需要将多个应用在多个虚拟屏幕中打开,这样就可以做到无限屏了。

有没有什么办法?

请问可以多给一些背景信息吗?

因为我需要将多个应用在多个虚拟屏幕中打开,这样就可以做到无限屏了。

这是一个Android应用吗?它是想像Beam Pro的launcher那样可以在空间中打开2D应用吗?只不过您是想打开更多数量的应用。
我的理解对吗?

是的,是一个android应用,就是想像nebulaOS中一样可以拉起多个第三方的2d应用。

据我所知,拉起第三方应用是需要特殊的权限的,我们中间做了很多工作,暂时没法分享给您

我理解这个是系统层面加白了一些创建virtualdisplay的行为,可以考虑一下放开一些接口之类的,也许可以放在nrsdk中。

好的,那为了更好地反馈,我想了解下,您需要这个接口来做什么呢?如果是上面的应用场景,那其实和现在NebulaOS做的事情是一样的,之所以没做更多数量的三方应用,是受到了硬件性能的限制。

比如最简单的一个场景就是,我想通过手势控制任意APP,这个或许在ultra上官方是有计划推动的,但是遗憾的是我感觉nreal x是不会适配的,被抛弃了,所以我想做一个适配nreal x 的nebulaos。

其次就是飞鼠场景,飞鼠在air系列眼镜上几乎是不可用的,因为没有复位的方式,只有普通鼠标和手柄可用,所以我希望可以定制化飞鼠的使用,比如说限制住它不会飞出眼镜的FOV范围,这样就不需要复位了。这个官方或许有计划支持,但是不知道啥时候。

以上是我举例的一些最直接的交互场景,如果开放了这个接口,我就可以做许多自己喜欢的交互方式,或者说分享给社区的人一起交流。

而且我认为,beam pro的意义就在这里,因为官方魔改系统将许多被权限卡住的流程疏通了,所以相应的nebulaos可以提供比以前ar空间更多的能力,而这些能力其实可以下放给开发者的,因为开发者在开发ar空间的时候也是会遇到一样的痛点。

了解,我会如实反馈的,但一方面这个是Android系统层面的权限问题,或许不适合放到眼镜的SDK里。另一方面涉及到权限这些问题,估计是比较难开放出来的。