当前位置: 移动技术网 > 移动技术>移动开发>Android > Android Q 双屏异显

Android Q 双屏异显

2020年07月17日  | 移动技术网移动技术  | 我要评论

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输出。。。

本文地址:https://blog.csdn.net/u010165638/article/details/107356854

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网