Как включить вибрацию на андроид с джойстиком
Данная тема является продолжением статьи https://4pda.to/2014/12/12/190359/
Здесь обсуждаем способ создания нативной поддержки для устройств ввода и делимся готовыми решениями.
- устройство на Android 4+ (проверял только на 5.0 и 4.4);
- поддержка устройством USB OTG;
- наличие root-доступа;
- файловый менеджер с поддержкой root (в моём случае это Total Commander);
- текстовый редактор (в моём случае это опять Total Сommander);
- лист бумаги и карандаш;
(для определения свойств устройства);
(для отображения кодов кнопок устройства) временно недоступна по ссылке, скачивайте с форума, ссылка ниже.
Еще одна программа, отображающая коды кнопок и действия осей Google Play
Универсальная программа для тестирования кнопок, редактирования действий и создания конфига Gamepad Tester
1. Создание файла с VID и PID
Подключаем наше устройство ввода и запускаем приложение USB Device Info. Нас интересует вкладка Linux, в которой выбираем своё устройство (у меня оно было последним в списке) и ищем значения строчек Vendor ID и Product ID. В моём случае это были 0c45 и 7700 соответственно. 
Так же VID и PID можно посмотреть подключив устройство к ПК.
Для Bluetooth устройств:
Узнать эти значения для Bluetooth девайсов можно открыв файл /proc/bus/input/devices.
Копируем любой файл из /system/usr/keylayout на sdcard и переименовываем его в соответствии с полученными данными, для моего джойстика название получилось таким: Vendor_0c45_Product_7700.kl. (Обратите внимание, что регистр букв имеет значение)
2. Получение кодов кнопок
Запускаем приложение KeyTest и, вооружившись бумагой и карандашом, начинаем поочерёдно нажимать кнопки на устройстве, записывая цифры, высвечивающиеся после scanCode=. Я записывал коды, располагая их на бумаге, как кнопки на геймпаде. 
Из программы можно выйти только по кнопке «Домой».
ВНИМАНИЕ!
Если Геймпад видно в первом шаге, но кейтест не реагирует на нажатия, возможно, у вас отсутствует нужный модуль в ядре — скажите «спасибо» автору прошивки.
Но не отчаивайтесь, есть возможное решение Нативная поддержка для устройств ввода (Пост wm-hater #52134473)
3. Маппинг кнопок
Теперь, когда стали известны коды всех клавиш, необходимо прописать их функции. Тут есть два пути:
а) найти среди имеющихся в Android конфигов устройство, максимально приближенное к вашему, и просто изменить в нём коды кнопок, скопировав содержимое в свой файл;
б) прописать все самому.
Я пошёл по второму пути, ибо мой джойстик имеет только крестовину управления и четыре кнопки. Для начала нужно понять синтаксис файла раскладки, он очень прост:
key код_кнопки действие_кнопки
Но тут возник вопрос: а какие действия кнопок писать в конфиге? За много лет использования различных геймпадов на Android я для себя определил, что самый универсальный конфиг — это раскладка от Sony Xperia Play, она одинаково хорошо ведёт себя как в играх, так и в интерфейсе системы.
Ok Google, key mapping for Xperia Play
Нас интересует третья колонка, но запись действий в ней немного отличается от тех, что были найдены в системе — это не помеха, просто убираем KEYCODE_.
Прописываю свои кнопки (помните листок с карандашными записями? Самое время найти его. ):
. ВНИМАНИЕ .
Нужен текстовый редактор с поддержкой unix кодировки!
Блокнот из состава Windows НЕ подойдет ,
Используйте, к примеру, Notepad++
4. Момент истины
Сохраняем наш файл и копируем его в папку /system/usr/keylayout. Выставляем права -rw -r -r (644). Перезагружаем устройство (сам я этого не делал, просто заблокировал и разблокировал, но для чистоты совести и эксперимента обязан был это написать).
Подключаем наше устройство, и если всё сделали правильно, тут же сможете «крестовиной» перемещаться по меню Android. Кнопка, на которую назначили DPAD_CENTER, будет кнопкой выбора, а BUTTON_B — кнопкой «назад».
Q: Все прописываю верно, но конфиг не цепляется.
А: Если вы пропишете коды действий с ошибкой, например:
key 123 BUTTON_HOME вместо key 123 HOME
то система будет считать этот файл ошибочным.
Проверить свой файл на ошибки можно на сайте: https://ris58h.github.io/validatekeymaps/ (спасибо говорим prakop29 )
Также есть способ проверить подхватывается ваш kl файл системой или нет — стереть все кейкоды или закомментировать их знаком #:
# key 123 BUTTON_HOME
Если файл подхватился — никакой реакции на кнопки не будет, но в KeyTest все будет отображаться.
Q: Все прописываю верно и без ошибок но все или часть кнопок не работают.
А: Попробуйте прописать scancode в hex формате: Нативная поддержка для устройств ввода (Пост romanctest #69194647)
Q: Дуалшок 4 постоянно отваливается или работает с задержкой.
А: Нативная поддержка для устройств ввода (Пост maxmergov #81264882)
Настройка геймпада на Android

Для USB-вариантов понадобится использовать соответствующий переходник, который чаще всего выглядит так:

К этому адаптеру нужно подключать и радиомодуль беспроводных геймпадов, не использующих Bluetooth. После соединения с телефоном никаких дополнительных действий выполнять не нужно, переходите к следующему этапу.
Bluetooth-решения
Геймпады, работающие по протоколу Блютуз, требуется предварительно подключить. Делается это так:

-
Сначала убедитесь, что на целевом устройстве включён Bluetooth. Для этого откройте «Настройки» и перейдите к соответствующим параметрам – они могут быть как доступны сразу, так и находится внутри пунктов «Соединения» или похожем по смыслу.
Этап 2: Настройка
Конфигурирование контроллера в Android зависит от того, поддерживает ли работу с ним то или иное приложение. Если эта возможность официально заявлена, настройка совершается напрямую через него. В противном случае придётся использовать специальную оболочку. Процедура что в одном, что в другом варианте имеет тот же принцип, поэтому для примера покажем её для мультисистемного эмулятора RetroArch.
- В данной программе присутствует возможность автоопределения – для её использования просто запустите РетроАрк с подключённым контроллером и нажмите на нём любую кнопку.
- Если же вы желаете самостоятельно назначить управление, откройте панель настроек и тапните «Ввод».

- Далее коснитесь пункта «Раскладка порта 1», который отвечает за основной геймпад.

- Типов конфигурирования существует два – последовательно все разом, или каждый параметр по отдельности. Для первого воспользуйтесь опцией «Назначить все элементы управления» и следуйте инструкциям на экране.
Решение возможных проблем
К сожалению, не всегда геймпад получается настроить и использовать – порой можно столкнуться с одной или несколькими проблемами. Рассмотрим самые распространённые и методы их устранения.
Андроид не распознаёт геймпад
Данный сбой является одним из самых частых, с множеством причин происхождения. Выполните шаги далее для диагностики и решения проблемы:
- Первым делом проверьте работоспособность геймпада: подключите его к заведомо рабочему устройству (подойдёт и компьютер) и убедитесь, что игровой девайс распознаётся и функционирует. Если наблюдаются сбои, причиной всему именно манипулятор.
- Для контроллеров с проводным подключением стоит проверить адаптер – увы, но некоторые дешёвые экземпляры могут работать с перебоями либо вовсе выйти из строя в процессе эксплуатации.
- Также убедитесь, что телефон или планшет поддерживают OTG – в некоторых ультрабюджетных решениях эта технология отсутствует, поэтому USB-устройства не будут с ними работать.
- С устройствами Bluetooth отсутствие реакции на подключение означает неполадки либо с самим геймпадом, либо с модулем смартфона (планшета). Кроме того, версии ОС от Google старше 4.1 не поддерживают работу с беспроводными средствами ввода.
Часть кнопок геймпада не работают или нажимаются вместе с другими
С этой проблемой сталкиваются владельцы мобильных геймпадов с несколькими режимами работы, и она означает неправильно выбранный. Следовательно, для устранения надо отключить девайс и переподключить его с подходящим для Андроида вариантом. В случае же компьютерных контроллеров такое поведение свидетельствует об аппаратной неисправности.
Игра реагирует на нажатия с задержкой
Проблема присутствует исключительно у беспроводных вариантов геймпадов, и в большинстве случаев не исправима собственными силами – лучшим решением в такой ситуации будет уведомить разработчиков игры о проблеме и подождать выпуска обновления.
Как у консолей: подключаемые к Android 12 геймпады получат продвинутую тактильную отдачу

Авторитетное зарубежное издание XDA-Developers обнаружило в AOSP новые заметки, свидетельствующие о том, что Google работает над внедрением в Android 12 поддержки продвинутой тактильной отдачи (вибрации) для подключённых к системе геймпадов.
На данный момент Android настраивает тактильную отдачу подключаемых к системе контроллеров крайне посредственно: грубо говоря, разработчики могут либо включить вибрацию, либо выключить её — у них нет возможности настроить амплитуду, чтобы она варьировалась в зависимости от сцены в игре и действий геймера. Как отмечается XDA-Developers, сейчас тактильную отдачу в подключённых к Android контроллерах комфортнее вообще не задействовать, чем использовать её при текущей реализации.
Вероятнее всего, Google решила улучшить этот аспект в связи с ростом популярности игровых стриминговых сервисов, которые позволяют транслировать игры на смартфоны через интернет. К тому же, сама «корпорация добра» развивает один из таких сервисов — Google Stadia.
В XDA-Developers полагают, что не все уже выпущенные контроллеры будут поддерживать продвинутую регулировку тактильной отдачи, поскольку для этого у них должен быть соответствующий Linux-драйвер. К тому же, пока что нет гарантий, что Google реализует соответствующие изменения в системе именно к выпуску Android 12, но такой расклад наиболее вероятен.
Как подключить геймпад к Android, чтобы играть джойстиком на телефоне
К 2023 году графика в мобильных играх достигла уровня консолей прошлого поколения, а большой экран современных моделей позволяет насладиться каждой деталью виртуальной локации. Однако сенсорное управление до сих пор оставляет желать лучшего. Поэтому, чтобы сделать игровой процессор более комфортным, необходимо подключить геймпад к Android. Сегодня вы узнаете, какие контроллеры для этого подойдут, а также раз и навсегда поймете, как играть джойстиком на телефоне.

Играть в мобильные игры на геймпаде намного удобнее
Какой джойстик для телефона купить
В принципе, для Android подойдет любой геймпад. Если у вас есть контроллер от PlayStation или Xbox, то можно использовать и его. При этом не важно, проводной джойстик или нет — любой получится подключить к телефону. Другое дело, что геймпады консолей плохо адаптированы под мобильные устройства. Они лишены встроенной подставки для смартфона, без которой играть будет едва ли не менее удобно, чем без джойстика вовсе.

Контроллер должен иметь специальный держатель для смартфона
Если у вас нет контроллера и есть желание купить геймпад для телефона, то присмотритесь к следующим моделям:
-
. Стильный и универсальный контроллер для тех, кто любит джойстики от Xbox. Цена — 2 350 ₽. . Недорогой геймпад с держателем для телефона. Цена — 1 150 ₽. . Дешевый контроллер в стиле PlayStation, к которому подойдет любой держатель. Цена — 1 150 ₽. . Универсальный джойстик наподобие контроллера Xbox One. Цена — 2 700 ₽. . Самая дешевая модель в списке, предлагающая широкий комплект поставки для разных типов подключения. Цена — 835 ₽.
Все представленные геймпады могут подключаться и по проводу, и без него. В то же время перед покупкой важно уточнить, что входит в комплект. Где-то держатель и кабель предлагаются по умолчанию, а иногда приходится доплачивать.
⚡ Подпишись на Androidinsider в Дзене, где мы публикуем эксклюзивные материалы
Как подключить геймпад к телефону
Если у вас уже есть геймпад и нет желания покупать новый, то давайте разберемся, как подключить джойстик к телефону. В этом отношении все зависит от того, используете вы проводной контроллер или модель со встроенным Bluetooth. В первом случае вам может понадобиться переходник. Особенно, если кабель геймпада имеет выход USB-A. Вот несколько адаптеров, которые не будут лишними:
-
. Цена — 235 ₽. . Цена — 77 ₽. . Цена — 195 ₽. . Цена — 86 ₽.
Штекер кабеля от контроллера нужно вставить в переходник, а сам адаптер — в разъем телефона. Учтите, что проводное подключение подходит только для моделей с поддержкой OTG.

Для проводного подключения нужен переходник или геймпад с двусторонним кабелем
❗ Поделись своим мнением или задай вопрос в нашем телеграм-чате
Теперь поговорим о том, как подключить беспроводной геймпад к телефону. Здесь действует та же инструкция, что и для любых других Bluetooth-устройств:
- Откройте настройки телефона.
- Перейдите в раздел Bluetooth.
- Активируйте Bluetooth.
- Нажмите кнопки синхронизации на корпусе геймпада (обычно это «Power» и «Share»).
- Выберите свой контроллер среди обнаруженных устройств.
- Нажмите кнопку «Подключить».

Беспроводной геймпад подключается так же, как и любая другая Bluetooth-периферия
Более подробную информацию о подключении джойстика к Андроид ищите в инструкции к своему геймпаду. Там же вы найдете информацию о кнопках для сопряжения. Если инструкции нет — попытайтесь найти ее на официальном сайте производителя, выбрав свою модель.
Загляни в телеграм-канал Сундук Али-Бабы, где мы собрали лучшие товары с АлиЭкспресс
Как настроить геймпад на Андроид
Одного подключения геймпада к телефону мало, чтобы начать играть. Также важно настроить джойстик на Андроид. В этом вам помогут специальные приложения. Например:
Все приложения для геймпада на Андроид работают схожим образом. Первым делом вам нужно подключить контроллер, запустить программу и дать ей разрешение на отображение поверх других приложений. Когда вы откроете игру, то увидите дополнительный слой. Он нужен для эмуляции сенсорного управления.

Для настройки геймпада нужно наложить стандартные кнопки сенсорного управления в игре на слой, который появляется после установки приложения
Вам необходимо расположить элементы дополнительного слоя таким образом, чтобы они накладывались на кнопки сенсорного управления. Для этого либо начните матч, либо откройте настройки игры, позволяющие изменить управление по умолчанию.
⚡ Подпишись на Androidinsider в Пульс Mail.ru, чтобы получать новости из мира Андроид первым
Игры с джойстиком на Андроид
К сожалению, настроить управление джойстиком можно далеко не во всех играх даже при помощи специальных приложений. Например, проекты категории «три в ряд» не подойдут, так как взаимодействие с ними не предусматривает использование сенсорных кнопок, а потому не поддерживает эмуляцию. Но мы нашли несколько отличных игр на телефон с геймпадом:
-
. Гоночный симулятор, отлично работающий даже на старых смартфонах. . Лучшая игра в жанре «королевская битва», насчитывающая более 500 миллионов скачиваний. . Легендарный тактический шутер для операционной системы Android с огромным количеством игровых режимов. . Файтинг с отличной графикой от студии NEKKI, ставший лучшей игрой 2020 года по версии DevGAMM. . Футбольный симулятор, выгодно отличающийся от FIFA Mobile более реалистичным геймплеем, для которого идеально подходит джойстик.
Для управления геймпадом все эти игры нужно предварительно настроить через одно из внешних приложений, разрешив ему отображение поверх остальных программ. Только так вы сможете играть на телефоне джойстиком, получив преимущество над соперниками в онлайне.