我想在主显示器和辅助显示器中显示键盘。
但是键盘显示在任何一个显示器上。让我知道是否有任何解决办法可以在两个显示器中显示键盘[通过使用 android 默认键盘]?
实际行为: 当我将光标保持在主显示屏上时,会显示键盘。 现在,当我将光标保持在辅助显示器上时,键盘会在主显示器中关闭并在辅助显示器中显示。
预期行为: 在两种显示中,都应显示键盘。
平台:Android 12及以上? 如果不可能,那么信息娱乐等多显示器如何在乘客和中央显示器上显示键盘?
以下 POC 仅适用于一种显示器,不适用于其他显示器。 Android 有没有什么API可以用来处理并让我知道如何使用?
class MainActivity : AppCompatActivity() {
private lateinit var displayManager: DisplayManager
private lateinit var inputMethodManager: InputMethodManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Get display and input method managers
displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
// Set up multiple displays
setupMultipleDisplays()
}
private fun setupMultipleDisplays() {
// Get all available displays
val displays = displayManager.displays
// Check if we have at least two displays
if (displays.size >= 2) {
try {
// Create presentation for the second display
val secondaryDisplay = displays[1]
val secondaryPresentation = SecondaryDisplayPresentation(this, secondaryDisplay)
secondaryPresentation.show()
// Set up input for both displays
setupDisplayInputs(displays)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun setupDisplayInputs(displays: Array<Display>) {
// Primary display input - use safe null check
val primaryEditText: EditText? = findViewById(R.id.primaryEditText)
primaryEditText?.setOnFocusChangeListener { view, hasFocus ->
if (hasFocus) {
showSoftInput(view, displays[0])
}
}
// Secondary display input - use safe null check
val secondaryEditText: EditText? = findViewById(R.id.secondaryEditText)
secondaryEditText?.setOnFocusChangeListener { view, hasFocus ->
if (hasFocus) {
showSoftInput(view, displays[1])
}
}
}
private fun showSoftInput(view: View, display: Display) {
// Show soft input keyboard on the specific display
view.requestFocus()
// Show soft input keyboard
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
// Secondary display presentation
inner class SecondaryDisplayPresentation(
context: Context,
display: Display
) : Presentation(context, display) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.custom_keyboard)
}
}
}
实际输出:(当焦点位于辅助显示器上时,键盘不会在主显示器中显示)如下图所示:
https://i.sstatic.net/nubYyacP.png
预期输出:键盘应在主显示屏和辅助显示屏中显示。
我想在主显示器和辅助显示器中显示键盘
手机和平板电脑的原生 Android 不提供此功能。据我所知,没有任何设备制造商为辅助显示器提供完整的触摸屏支持,其中辅助显示器显示单独的内容(而不是主显示器的镜像)。
当然欢迎您创建自己的 Android 分支,在您自己的自定义硬件上运行,尝试支持在多个显示器上使用 IME。或者,如果 LineageOS 等项目支持您所需的硬件,您可以寻求为它们提供此类支持。或者,您可以找到提供硬件和支持多个 IME 的定制 Android 版本的人。
那么信息娱乐系统等多显示器如何在乘客显示屏和中央显示屏上显示键盘?
主要有以下三种可能性: