Как настроить ориентацию внешнего сенсорного экрана на устройстве с Android?

Здравствуйте! У меня есть несколько вопросов по созданию графического интерфейса (ГУ) для автомобиля, основанного на OLED-дисплее с использованием Samsung S20 в качестве контроллера. Я использую OLED-дисплей, который изначально предназначен для ASUS Vivobook Slate T3300K, а для передачи данных от сенсора применяю ESP32S3 с функцией ввода по Bluetooth. 

В большинстве случаев все работает корректно как на Android, так и на Windows: при сопряжении сенсорные команды успешно передаются в систему. Однако с Samsung S20 возникают проблемы. Телефон по умолчанию отображает изображение в портретном режиме и с разрешением, отличным от моего внешнего дисплея. Я попытался исправить это с помощью команды `adb shell wm size 1920x1080` для установки разрешения в 1080P и команд `adb shell settings put system user_rotation 0`, чтобы принудительно установить ландшафтную ориентацию, а также отключил зависимость от акселерометра.

Когда я устанавливаю разрешение 1920x1080 через `adb shell wm size`, изображение на внешнем дисплее отображается корректно, и приложения выглядят нормально. Однако сенсорный экран не работает должным образом — касания не регистрируются в системных областях, несмотря на то, что экран реагирует на прикосновения (например, при проведении по краям дисплея появляются стрелки для переключения рабочих столов).

Если изменить ориентацию на 180 градусов с помощью команды `adb shell settings put system user_rotation 2`, сенсор начинает работать правильно, и касания регистрируются, но это приводит к обрезке нижней части приложений, оставляя черную полосу. Установка разрешения в 1080x1920 также даёт корректные результаты для сенсора, но вызывает обрезание отображения приложений с одной стороны, что зависит от значения `adb shell settings put system user_rotation`.

Учитывая все вышесказанное, могут ли у вас быть предложения по решению проблемы с отображением и работой сенсора на Samsung S20?
  • 6 апреля 2025 г. 1:25
Ответы на вопрос 2
Настройка ориентации внешнего сенсорного экрана на Android может быть сложной задачей, особенно когда дело касается нестандартных конфигураций. Вот несколько подходов и советов, которые могут помочь вам решить вашу проблему.

### 1. Конфигурация дисплея

- **Разрешение и ориентация**: Убедитесь, что ваше Android-устройство поддерживает разрешение экрана и ориентацию, которые вы хотите использовать. Возможно, стоит попробовать задать разрешение 1920x1080 в ландшафтной ориентации (0 градусов), а не оставаться на 1080x1920.

### 2. Использование сторонних приложений

- Попробуйте использовать сторонние приложения для управления ориентацией и масштабированием экрана. Некоторые из них могут помочь вам установить кастомные значения для DPI и разрешения, такие как **“Set Orientation”** или **“Rotation Control”**.

### 3. Настройки ADB

- Убедитесь, что при использовании ADB у вас установлены правильные значения DPI. Возможно, вам нужно будет установить значение DPI для адекватной работы с фиксированным разрешением. Например:
    ```shell
    adb shell settings put system display_density 240
    ```
  
### 4. Обновление прошивки или ROM

- Если ваш телефон Samsung S20 работает на кастомной версии Android или устаревшей прошивке, обновление до последней версии может помочь. Иногда производители обновляют поддержку внешних дисплеев и сенсорных экранов.

### 5. Accessibilité

- Также не забудьте проверить настройки доступности на вашем устройстве. Возможно, вам нужно будет отключить некоторые функции, которые могут влиять на взаимодействие с сенсорным экраном.

### 6. Исправление взаимодействия

- Если ваш сенсорный экран работает неправильно в ландшафтной ориентации, возможно, вам потребуется изменить настройки самого экрана. Проверьте, нет ли наложения (например, других распространённых функций сенсора), которые могут влиять на его работу.

### 7. Параметры разработчика

- Убедитесь, что в параметрах разработчика включены необходимые для вашего устройства настройки. Например, отключите "Автоповорот" или другие, которые могут конфликтовать с вашими настройками.

### 8. Потенциальные баги

- Проверьте, нет ли известных багов или проблем с совместимостью между вашим устройством и внешним дисплеем. Сообщества разработчиков, такие как XDA Developers, могут быть ресурсом, где вы найдете подходящие решения.

Если ни один из предложенных методов не сработает, возможно, стоит рассмотреть возможность использования другого устройства или телефона, который лучше поддерживает ваше оборудование и программное обеспечение.
Частично вижу проблему, если выставить в параметрах разработчика показывать нажатия и показывать место касания. Координаты по X показывает как надо, а вот по Y -1593 до 513
Похожие вопросы