Новая рация: как она попадает в приложение
Чтобы рация работала из коробки, приложению нужно знать её модель и коды кнопок. Снять их можно за пару минут нашим мини-приложением, без компьютера и adb.
- Кому
- владельцам и продавцам раций, защищённых телефонов, магнитол
- Скачать
- devicecheck.apk, 1 МБ, Android 7 и новее. Для Android 5.1 и 6 сборку пришлём по запросу в группе
- Сколько времени
- 2-3 минуты, отчёт уходит нам сам
«Проверка рации»
Это отдельное маленькое приложение, оно не связано с DMRConnect и ничего в нём не меняет. Человек ставит его, выбирает режим «Рация» или «Телефон с кнопкой» и по очереди нажимает кнопки, которые просит приложение. У рации 15 шагов: PTT с удержанием, боковые, SOS, крутилка, джойстик, кнопки под экраном, зелёная, цифры и в конце «все остальные». У телефона с программируемой кнопкой шага три.
Если у устройства нет сенсорного экрана, приложение управляется кнопками, а шаг пропускается сам через 12 секунд. Под TalkBack задания и пойманные кнопки зачитываются вслух, на шаг даётся 25 секунд.
Что попадает в отчёт
- Модель и производитель (
Build.MODEL,Build.MANUFACTURER), версия Android и прошивки, процессор и ABI. - Экран: пиксели, плотность, диагональ, есть ли сенсор.
- Все устройства ввода и какие кнопки они заявляют, список файлов раскладок
/system/usr/keylayoutи содержимое раскладок этих устройств. - Какие приложения принимают сигналы PTT, например штатный POC-клиент, и установленные приложения связи: в отчёт идут только пакеты со словами вроде ptt, poc, radio, dmr в имени, а не весь список.
- Включены ли специальные возможности и TalkBack.
- Каждое пойманное событие:
keyCode,scanCode, повторы при удержании, флаги, устройство-источник, время. Крутилка как прокрутка, сигналы PTT по их имени.
Позывных, контактов, местоположения и номеров телефона в отчёте нет. Отчёт уходит на dmrconnect.ru по https, мы разбираем его вручную.
Что мы делаем с отчётом
По отчёту понятно, как кнопка доходит до приложений: обычной клавишей, только долгим нажатием или сигналом. Дальше модель добавляется в профили DMRConnect, это одна строка в таблице устройств:
// UNIWA F400: PTT = F2 (132), честное удержание, сигналов PTT нет. Экран 480x800 с сенсором.
"UNIWA_F400" to Known(buttonsUi = false, ptt = 132),
Для известной модели приложение само выбирает интерфейс (кнопочный для устройств без сенсора), назначает PTT и крутилку. Если у рации нет сенсорного экрана, кнопочный интерфейс включается и без профиля. Человек всегда может переназначить кнопки, его выбор главнее профиля. Что уже знает приложение, смотрите в статье «Кнопка PTT».
Иногда отчёт показывает, что кнопку получает только штатное приложение производителя. Так было с Motorola LEX F10: прошивка Sonim отдаёт PTT только приложению из «Программируемых клавиш». Тогда мы ищем, как устроена рассылка у этого производителя, и учим DMRConnect её принимать.
Ручной способ, если есть adb
Самый точный источник - кейлог ядра. Подключите рацию по USB с включённой отладкой и выполните:
adb shell getevent -l # нажимайте кнопки по очереди и записывайте, что нажато
adb shell dumpsys input # какой файл .kl у каждого устройства ввода
adb shell wm size; adb shell wm density
adb shell getprop ro.product.model
adb shell getprop ro.product.cpu.abilist
Код ядра из getevent превращается в Android keyCode через файл .kl из /system/usr/keylayout/ или /vendor/usr/keylayout/, и производители этот файл правят. У Hytera P50 клавиша KEY_HOME переназначена на «Назад», у P60 код 634 назначен на PTT. Поэтому присылайте и вывод getevent, и сам файл раскладки.
32-битные рации
Если abilist показывает только armeabi-v7a, рации нужна сборка для 32 бит, она есть на сайте и ставится сама из общего файла. Вокодер MD380, который даёт лучший звук, у нас собран только для 64 бит. На 32-битных устройствах приём идёт через mbelib, звук заметно хуже. Это касается Hytera P50, P50 Pro, Motorola LEX F10 и, вероятно, других старых раций.
Куда писать
Отчёт «Проверки рации» приходит нам сам. Чтобы мы знали, чей он, напишите в группу DMRConnect модель и что не работает. Если у вас партия раций для клуба или организации, напишите заранее: проверим модель до закупки.
Нашли неточность или не хватает функции? Напишите в группу DMRConnect, поправим справочник.