首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >瑞芯微RK3576开发板Android14三屏异显开发教程

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

原创
作者头像
Industio_触觉智能
发布2025-09-18 17:22:12
发布2025-09-18 17:22:12
3000
代码可运行
举报
运行总次数:0
代码可运行

本文介绍瑞芯微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,代码如下:

代码语言:javascript
代码运行次数:0
运行
复制

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,代码如下:

代码语言:javascript
代码运行次数:0
运行
复制

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来启动新的活动,并指定要在外部显示器上显示的内容,代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
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来开启三个窗口分别显示在三个屏幕上。

图片
图片

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档