Но клавиатура отображается на любом из дисплеев. Сообщите мне, есть ли способ отобразить клавиатуру на обоих дисплеях [с помощью клавиатуры Android по умолчанию]?
Фактическое поведение:
Когда я держу курсор на основном дисплее, отображается клавиатура.
Теперь, когда я удерживаю курсор на дополнительном дисплее, клавиатура закрывается на основном дисплее и отображается на дополнительном дисплее.
Ожидаемое поведение:
В обоих случаях дисплей, клавиатура должна дисплей.
Платформа: Android 12 и выше?
Если это невозможно, то как на нескольких дисплеях, таких как информационно-развлекательные системы, клавиатуры отображаются как на пассажирском, так и на центральном дисплее?
Приведенный ниже POC работает только на одном дисплее и не работает на другом дисплее. Есть ли какой-либо API для Android, который можно использовать, и дайте мне знать, как его использовать?
Код: Выделить всё
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) {
// 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
Ожидаемый результат: клавиатура должна отображаться как на основном, так и на дополнительном дисплее.
Подробнее здесь: https://stackoverflow.com/questions/792 ... in-android
Мобильная версия