Как отображать клавиатуру на двух дисплеях одновременно в Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как отображать клавиатуру на двух дисплеях одновременно в Android?

Сообщение Anonymous »

Я хочу отображать клавиатуру как на основном, так и на дополнительном дисплее.
Но клавиатура отображается на любом из дисплеев. Сообщите мне, есть ли способ отобразить клавиатуру на обоих дисплеях [с помощью клавиатуры 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://stackoverflow.com/questions/792 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»