“ Life is like a box of chocolates, you never konw what you're going to get。最近我也得到了一块巧克力,迫不及待地想尝一下甜的惊喜 。”
前言
上一篇文章,我们分享了一个VirtualDisplay的简单实例,主要是为了引入创建虚拟屏幕都使用了哪些APIs,参考
Android Graphics 显示系统 - VirtualDisplay的初印象 - 简单示例
本篇再补充一点功能:mirrorDisplay。
有多屏开发经验的小伙伴,一定知道在开发者选项中可以开启模拟第二屏幕,其实就是创建虚拟屏幕,并对主屏幕做了镜像显示
UI操作按钮太繁琐,可以直接adb/console命令触发:
#创建一块辅助屏显示器
$settings put global overlay_display_devices "1920x1080/320,secure"
#创建两块辅助屏显示器
$settings put global overlay_display_devices "1920x1080/320,secure;1920x1080/320,secure"
#创建三块辅助屏显示器也是类似,以此类推
$settings put global overlay_display_devices "1920x1080/320,secure;1920x1080/320,secure;1920x1080/320,secure"
#关闭辅助屏显示器
$settings put global overlay_display_devices "none"
secure标记可以不用带,按需!
如果抛开复杂的WMS等上层逻辑,从C++ level怎么去createDisplay与mirrorDisplay呢?
我们就分享个demo实例,达到类似开启Simulate secondary displays的效果。
效果
console下执行命令创建虚拟屏幕和主屏幕的镜像,把主屏幕的镜像显示到虚拟屏幕,这样主屏幕和虚拟屏幕就显示同样的内容了。
console # VirtualDisplayDemo -m
Create Virtual Display(layer_stack=99)
Press any key to exit, waiting ...
效果如下: