Merge branch 'dev_arch_opt_3.0' into 'dev_robobus-m1-p-app-module_1.0.0_230112_1.0.0'

[dev_arch_opt_3.0]

See merge request zhjt/AndroidApp/MoGoEagleEye!536
This commit is contained in:
wangmingjun
2023-02-16 09:24:51 +00:00

View File

@@ -15,6 +15,57 @@ import androidx.appcompat.app.AppCompatActivity
object MultiDisplayUtils {
private val TAG: String = "MultiDisplayUtils"
/**
* 定昌电子6屏幕异显 对应的lcd匹配数组, 当前数组只对应于6屏异显,
* 如果是其他屏幕个数, 需要自己重新对应下相关的索引
* display 里面查看port对应的值
*/
private var lcd_sub_port_six_lcd_mode = arrayOf(
// main lcd // HDMI-1
//-------------------begin 定昌电子 RK3588 -------------------
"port=240", // HDMI-2
"port=3", // HDMI-3
"port=243", // HDMI-4
"port=2", // HDMI-5
"port=1", // HDMI-6
//-------------------end 定昌电子 RK3588 -------------------
)
/**
* 获取其他的屏幕
*/
fun getOtherDisplay(): Array<Display?> {
val mDisplayManager =
Utils.getApp().getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
// 获取除了内置屏幕(主屏幕)的其它屏幕
val displays = mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION)
// 初始化新的集合进行接收排序后的屏幕信息
val displaysList = arrayOfNulls<Display>(displays.size)
// 判断副屏个数
if (displays.isNotEmpty()) {
// 循环出来副屏幕进行重新排序
for (i in displays.indices) {
// 这里如果需要固定某个屏幕, 使用 if( display.toString().indexOf("port=1")!=-1) ) 而不是使用 display[i]
val strDisplayString: String = displays[i].toString()
for (j in lcd_sub_port_six_lcd_mode.indices) { // 这里增加port的匹配, 如果不需要对应的匹配 可看下面的other LCD
if (strDisplayString.indexOf(lcd_sub_port_six_lcd_mode[j]) != -1) { // 查找我们实际屏幕的匹配port
displaysList[j] = displays[i]
}
}
}
// 没有匹配到的显示
for (i in displays.indices) {
if (displaysList[i] == null) {
displaysList[i] = displays[i]
}
}
}
return displaysList
}
// 获取 是否支持扩展屏幕打开应用
fun isSupportMultiDisplay(context: Context): Boolean {
// 先检查一下是不是支持在第二屏上显示activity这个特性