瑞芯微RK3576开发板Android14三屏异显开发教程

描述

本文介绍瑞芯微RK3576平台Android14系统三屏异显开发的方法,使用触觉智能EVB7608开发板演示,开发板板载双千兆网口、HDMI2.1、Daul LVDS、HDMI IN、Type C(USB3.2)等丰富的显示、通信与拓展接口,帮助企业提高产品开发效率,降低成本和设计风险。

 

异显实现原理
 

通过Presentation对象指定不同的DisplayID,来创建三个不同的窗口显示到三个显示屏上实现异显。


 

创建Presentation对象方法有三种:

1、直接指定DisplayID,创建Presentation对象;

2、通过MediaRouter获取Presentation对象;

3、通过DisplayManager获取Display对象→创建Presentation对象→调用Presentation的show函数;

 

代码实现
 

第一步:使用MediaRouter来获取当前选中的路由,并从中获取Display对象,然后创建并显示MyPresentation,代码如下:

 

private void showSecondByMediaRouter(Context context) { MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE); MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO); if (route != null) { Display presentationDisplay = route.getPresentationDisplay(); if (presentationDisplay != null) { presentation = new MyPresentation(context, presentationDisplay); presentation.show(); } } }


 

第二步:使用DisplayManager 来获取可用的显示器,并根据显示器的数量显示MyPresentation和MyPresentation2,代码如下:

 

private void showSecondByDisplayManager(Context context) { DisplayManager mDisplayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display[] displays = mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION); if (displays != null) { if (displays.length >= 2) { presentation = new MyPresentation(context, displays[0]); presentation.show(); presentation2 = new MyPresentation2(context, displays[1]); presentation2.show(); } else { presentation = new MyPresentation(context, displays[displays.length - 1]); presentation.show(); } } }


 

第三步:使用 ActivityOptions来启动新的活动,并指定要在外部显示器上显示的内容,代码如下:

 

private void showSecondByActivity(Context context) { DisplayManager mDisplayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display[] displays = mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION); ActivityOptions options = ActivityOptions.makeBasic(); MediaRouter mediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE); MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO); if (route != null) { Display presentationDisplay = route.getPresentationDisplay(); options.setLaunchDisplayId(presentationDisplay.getDisplayId()); Intent intent = new Intent(MainActivity.this, MainActivity2.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent, options.toBundle()); } if (displays.length >= 2) { ActivityOptions options2 = ActivityOptions.makeBasic(); options2.setLaunchDisplayId(2); Intent intent = new Intent(MainActivity.this, MainActivity3.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent, options2.toBundle()); } }


三异显测试测试

打开系统的触摸划线测试,运行修改为三显的DualScreenDemo APK,点击 Persentation DisplayManager来开启三个窗口分别显示在三个屏幕上。

rk3576

 

从Dumpsys input中可以看到 两个ELAN Touchscreen分别对应上了 displayId 0、1和 2。分别在三个触摸屏上划线,对应的触摸屏分别在指定的屏幕上划线有效。

 

产品介绍

触觉智能RK3576开发板,型号IDO-EVB7608-V1。助力全国产高阶应用!支持工业级摄像机高清图像输入与4K HDMI超清录屏,赋能工控视觉、AIOT等场景;8核与6T高算力,流畅运行视频、AI应用及多任务处理,兼顾低功耗与工业稳定性,全能型高阶方案就选TA! 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分