На рисунке показан вид экрана в вертикальной ориентации. Выберите иконку в виде принтера на нижней (боковой) панели (стрелка 1 на рис.)
Верхняя часть экрана (блок 2) отображает список сетей и поддержку USB-OTG. Читать подробнее.
Поддержка WiFi Direct (блок 3) реализована только для Android 13 и выше. Я не хочу объяснять пользователям более ранних версий, почему драйверу принтера нужно знать ваше местоположение.
Основная часть экрана (блок 4) отображает найденые принтеры. Зеленый цвет означает, что устройство обнаружено и совместимо с программой.
В отличии от других служб печати, которые показывают только абсолютно правильные с их точки зрения. Здесь Вы можете увидеть все и без группировки в один принтер разных способов подключения к нему.
В качестве примера использован реальный скриншот. Телефон Realme C55 (Android 14). Микро адаптер USB-OTG из комплекта китайского планшета и оказавшийся под рукой usb хаб со встроенной сетевой картой. Принтеры Xerox Phaser 3020 (переименован мною покороче через его web интерфейс) и Pantum P2500NW.
Как служба печати PS402d ищет принтеры
На рисунке выше рядом с каждым найденым устройством есть пометка (mDNS,p2p,usb).
Основным способом обнаружения принтеров для бездрайверной печати (driverless print) является вариация доменной службы (DNS). Кому интересно поищите по слова Avahi,Bonjour apple,mDNS. Устройства обмениваются UDP сообщениями через порт 5353.
Принтер должен анонсировать себя в одной или нескольких специальных dns зон. Ps402d следит/опрашивает зону _ipp._tcp
USB устройства при общение с другими должны представляться, сообщая свой клас,подклас и номер протокола. Говоря об принтерах в общем следует упомянуть два класса (2 — коммуникация и 7-печать), но 2-ой класс используется для указания, что общение идет по протокулу последовательного порта (COM-порт или другое сокращение SPP).
7/1/4 — означает печать протокол ipp через usb. В 7м классе только один 1-й подкласс. Исторически сложилось. Другие протоколы:
- 1 — только в сторону принтера
- 2 — туда и обратно ответы от принтера
- 3 — USB_PRINTER_1284 — или по простому эмуляция старого LPT порта
В список попадают все устройства 7-го класса с подкласом 1. И обязательно прочтите о проблемах подключения USB-OTG.
Поиск WiFi Direct(p2p) заслуживает отдельной статьи, которую я обязательно напишу чуть позже.
Проверка совместимости
Из списка найденых устройств можно получить подробную информацию о принтере. Изображение, если оно предоставляется принтером. Блок выводов о совместимости и работоспособности. Блок действий (ручной выбор PDL, тестовая печать) Просмотр полного ответа IPP протокола на команду запроса свойств принтера. Все поля ответа mDNS протокола.
Так как ответы протоколов довольно значительны по количеству полей, я добавил поиск по названиям и значениям
При выводе информации об IPP-USB принтере делается только запрос о свойствах принтера
Проверка печати тестовой страницы
Ответ принтера на задание печати, может быть как лаконичным, так и довольно пространственным.