Android上外部显示器的屏幕截图?

Com*_*are 7 android android-sdk-tools

通过Presentation课堂和相关设施,Android应用程序可以在外部显示器(HDMI,MHL,Miracast等)上显示单独的内容,而不是手机或平板电脑自带的触摸屏(我在这里称之为"主要显示器").

对于主显示器,我们可以使用screencap或DDMS进行屏幕截图.

有没有办法做外部显示屏的截图?

理想情况下,它可以使用类似于screencap/ DDMS 的解决方案,无需修改应用程序.然而,涉及以某种方式复制Window表示外部显示器的内容的解决方案也将是有趣的.

fad*_*den 10

捕获外部显示器没有操作系统功能.

主显示屏由多个来源合成,外部显示屏也是如此."屏幕捕获"功能实际上只是合成各种源的另一种方式.因为它使用与主显示相同的参数,所以可以获得相同的输出.(请注意,任何"安全"层,例如受DRM保护的视频,都不会出现.)因此,为了"捕获"外部显示器,您需要一种使用外部显示器"层叠"的屏幕捕获变体,而不是主要的,并没有这样做的API.

(参见SurfaceFlinger::captureScreenImplLocked()SurfaceFlinger.cpp.)

screenrecord命令执行类似的操作:它使用主显示器的图层堆栈创建虚拟显示,并捕获在那里渲染的任何内容.

就捕获输出的输出Presentation而言,有一些可能感兴趣的CTS测试.该VirtualDisplayTest创建Presentation并与捕获它的ImageReader,而EncodeVirtualDisplayTest饲料通过一个完整的视频编码/解码路径演示.测试只绘制一系列颜色,然后检查以确保可以回读颜色.这两个都需要Android的最新版本(例如,ImageReader直到API 19才存在),并且应用程序的有限权限会将输出限制为应用程序本身呈现的内容.

  • 你怎么知道这一切:O (3认同)
  • @rupps:如果fadden写下我们在这里讨论的一些内容,我不会感到震惊...... :-) (3认同)