基于NNEWN NSR3588开发板Android12系统实现四屏异显

RK3588四屏异显功能实现介绍

1.硬件连接

4路显示接口的组合为:HDMI0+HDMI1+DP0+MIPI DSI1

NSR3588开发板上的4路显示接口如下(红色方框):
在这里插入图片描述
4屏连接后整机环境搭建如下:
硬件连接如上图所示

2.内核dts配置

(1)RK3588的4个显示VOP分配如下:
HDMI0绑定到VP0
HDMI1绑定到VP1
DP0绑定到VP2
MIPI DSI1绑定到VP3

(2)dts配置
配置打开HDMI0和HDMI1

&hdmi0 {
        enable-gpios = <&gpio4 RK_PB1 GPIO_ACTIVE_HIGH>;
        status = "okay";
};

&hdmi0_in_vp0 {
        status = "okay";
};

&route_hdmi0 {
        status = "okay";
        connect = <&vp0_out_hdmi0>;
};

&hdmi1 {
        status = "okay";
};

&hdmi1_in_vp1 {
        status = "okay";
};

&route_hdmi1 {
        status = "okay";
        connect = <&vp1_out_hdmi1>;
};

配置打开MIPI DSI1

&dsi1_in_vp2 {
       status = "disabled";
 };

 &dsi1_in_vp3 {
       status = "okay";
 };

 &route_dsi1 {
        status = "okay";
       connect = <&vp3_out_dsi1>;
 };

打开Type-C DP功能

&dp0 {
        status = "okay";
};

&dp0_in_vp2 {
        status = "okay";
};

3.Android异显示方案

PS:本段摘自<Rockchip Android11 异显开发指南.pdf>

我们目前采用的是Andorid Activity 指定屏幕启动的方案:
在startActivity 接口参数中设置指定屏幕的display id,Activity 将在指定屏幕上直接启动显示。

Activity 的多显示器支持需要设备支持

<feature name="android.software.activities_on_secondary_displays" />

同时application 或者activity 需要支持分屏属性即

<application>或者<activity>标签下设置新的属性android:resizeableActivity="true"

这个属性在你target到Android N 后android:resizeableActivity 的默认值就是true。

ActivityOptions 提供两个新函数以支持多个显示器:
setLaunchDisplayId() 指定Activity 在启动后应显示在哪个显示器上。
getLaunchDisplayId() 返回操作组件的当前启动显示器。
setLaunchDisplayId() 使用示例:
示例中使用MediaRouter 接口获取副屏的display id,同理也可以使用
DisplayManager 接口获取响应的display id。

注意此处只能打开其他包中的Activity,否则会提示:“App does not support launch onsecondary displays”。

private void showSecondByActivity(Context context){
		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());
		//options.
			Intent intent = new Intent("android.intent.action.MUSIC_PLAYER");
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			startActivity(intent, options.toBundle());
		}
}

同时也对adb shell 进行了扩展,以支持多个显示器。shell start 命令现在可用于启动操作组
件,并指定操作组件的目标显示器:

adb shell am start --display <display_id> <activity_name>
例如:adb shell am start --display 1 com.android.settings/.Settings(把settings 界面启动到指定的副屏)

4.四屏异显测试APK及效果演示

四屏异显的测试APK主界面如下:
在这里插入图片描述

演示效果如下:
在这里插入图片描述

5.技术交流

介绍了这么多,先给兄弟们上点干货。
这里提供RK3588多屏异显示的测试APK,百度网盘地址:
链接:https://pan.baidu.com/s/1mLw-BVpmLE7v-qzQsQdiig
提取码:6efl

想了解更多产品特性也可以移步: nnewn.
欢迎各位朋友一起沟通交流,互相学习!

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值