最近在做一个Android双屏异显的项目,要实现一台Android设备通过HDMI连接两个显示器,然后在一个App中同时显示两个不同的画面。
标题实际上Android并不存在真正的像Windows一样的双屏异显,Android的双屏异显实际上是将一个View覆盖在了主显(或副显)上,从而实现两个显示器显示不同画面的效果。
在网上查找相关资料,发现基本都是使用 Android 的 Presentation 这个类来实现双屏异显的效果。但是在我的实际使用中效果并不理想。通过查看Prentation类的源码,得知其实际上是一个封装好的Dialog。在使用Presentation过程中,有时会出现无法产生第二画面的问题,各种查找资料无果,无奈智能另寻方法。
所以,我来介绍一个全新,简单,稳定的双屏异显解决方法。该方法只有几行核心代码。很简单,话不多说,我们直接放码过来。( Talk is cheap, show me the code. — Linus )
MediaRouter mediaRouter = (MediaRouter)getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo routeInfo = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
Display secondDisplay = routeInfo.getPresentationDisplay();
WindowManager windowManager = (WindowManager)this.createDisplayContext(secondDisplay).getSystemService(WINDOW_SERVICE);
Context secondDisplayContext = this.createDisplayContext(secondDisplay);
View view = View.inflate(secondDisplayContext, R.layout.viewLayout, null);
windowManager.addView(view, new WindowManager.LayoutParams(2003,3,3));