Android Q 双屏异显

Android Q 双屏异显

现在很多AR场景,需要扩展屏或者虚拟屏VD 进行展示3D画面,并通过手柄或者手机模拟的触摸板进行交互控制。从android官网多屏幕支持了解其android Q 已经有多屏支持了,方便扩展屏幕及折叠屏使用。

此处记录下其体验demo

经过验证,可支持同应用不同activity 启动在第二块屏幕上。

imageView3.setOnClickListener {
            val manager = activity?.getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
            val displays = manager.displays
            Log.e("zjr", "onCreate: displays.size = ${displays.size}")
            if (displays.size > 1) {

                Toast.makeText(
                    activity,
                    "开启扩展屏:displayId = ${displays[1].displayId}",
                    Toast.LENGTH_SHORT
                ).show()

                Log.w(TAG, "onActivityCreated: flags = ${displays[1].flags},private = ${Display.FLAG_PRIVATE},secure = ${Display.FLAG_SECURE}" )
                val options = ActivityOptions.makeBasic()
                options.launchDisplayId = displays[1].displayId
                val optsBundle = options.toBundle()

                //   val intent = Intent(activity,SecondActivity::class.java)
                // "com.android.settings", "com.android.settings.Settings"
               

//                val intent = Intent()
//                intent.component =
//                    //ComponentName("com.android.settings","com.android.settings.Settings")

                val intent = Intent(activity,SecondActivity::class.java)
                        intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
                //判断是否有限制启动在对应的display上
                if (activityManager.isActivityStartAllowedOnDisplay(
                        context!!,
                        options.launchDisplayId,
                        intent
                    )
                ) {
                    startActivity(intent, optsBundle)
                } else {
                    Log.e(TAG, "onActivityCreated: 不支持启动在扩展屏幕上")
                    Toast.makeText(activity, "不支持启动在扩展屏幕上", Toast.LENGTH_SHORT).show()
                }
            }

        }

其中比较坑的地方就是:

intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)

必须添加如上flag 才能正常启动在扩展屏上。

 测试环境: 外接typec扩展屏,支持dp输出的手机,如oppo Reno; 小米直接去除了DP输出。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值