Android Q 双屏异显
程序员文章站
2022-03-03 22:05:49
Android Q 双屏异显现在很多AR场景,需要扩展屏或者虚拟屏VD 进行展示3D画面,并通过手柄或者手机模拟的触摸板进行交互控制。从android官网多屏幕支持了解其android Q 已经有多屏支持了,方便扩展屏幕及折叠屏使用。此处记录下其体验demo经过验证,可支持同应用不同activity 启动在第二块屏幕上。imageView3.setOnClickListener { val manager = activity?.getSystemService(C...
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