Samsung Knox Capture: установка, настройка кнопок, тестирование и интеграция в Android-приложение
Дата практического прогона: 23 сентября 2026 года.
Это полный практический гайд и отчёт живого сравнения двух телефонов:
rugged Samsung Galaxy XCover7 Pro (SM-G766B) и обычного
Galaxy A18 (SM-A185F). Мы проверили установку без
повторного входа в Google Play, все разделы меню, аппаратные и экранные
триггеры, QR/Code 128, уменьшенные, размытые, низкоконтрастные,
повёрнутые и повреждённые коды, keyboard wedge и способы интеграции в
Android. Для каждого опыта сохранены скриншоты с обоих аппаратов, ADB
baseline и logcat.
Что получилось
| Параметр | Значение |
|---|---|
| Устройства | Samsung SM-G766B (xcover7pro) и
SM-A185F (a18) |
| Android | 16 / 17 |
| Security patch | 2026-07-05 |
| Knox Capture | 2.6.00.0, version code 260000000 |
| Тестовое приложение | com.example.knoxwedgetest, версия
1.0.1 |
| Профиль | Wedge Test |
| Тестовый QR | ABC-1234 |
| Результат | ABC-1234 появился в поле Barcode |
| Медиана чистого QR после прогрева | 882.68 ms / 1112.40 ms |
| Повреждённая серия | оба телефона: 6 успехов из 9 условий |
| Crash / ANR | не обнаружены |
Первоначальный XCover-прогон дал 1985 ms. Сравнение ниже использует
исправленную версию тестового приложения и отдельные серии. Метрика
измерена от наблюдаемого trigger до изменения EditText; она
включает открытие preview, экспозицию/фокус, распознавание и вывод, а не
только работу декодера.
1. Установка
Knox Capture устанавливался из Google Play по package name
com.samsung.android.app.smartscan. После установки на
странице появились кнопки «Удалить» и «Открыть».

Проверка через ADB:
adb shell pm path com.samsung.android.app.smartscan
adb shell dumpsys package com.samsung.android.app.smartscan \
| grep -E 'versionCode=|versionName=|firstInstallTime=|lastUpdateTime='Фактически зафиксировано:
versionName=2.6.00.0
versionCode=260000000
firstInstallTime=2026-09-23 17:01:25
Camera permission выдавался только при первом фактическом запуске scanner и только в режиме «При использовании приложения». Bluetooth и notification permissions для этого базового теста не требовались.
Как не входить в Google Play на каждом телефоне
Один раз установленный пакет был извлечён с XCover и поставлен на A18 через ADB:
adb -s R3CY10C02FH shell pm path com.samsung.android.app.smartscan
adb -s R3CY10C02FH pull \
/data/app/.../com.samsung.android.app.smartscan.../base.apk \
KnoxCapture-2.6.00.0.apk
sha256sum KnoxCapture-2.6.00.0.apk
adb -s R3GL50BX17T install KnoxCapture-2.6.00.0.apkНаш проверенный APK:
размер: 38,506,001 bytes
SHA-256: 1858f5a5e710a46c5c646fb720acf5482a6461028dd8bf73c50f9d0fe5d5d712
package: com.samsung.android.app.smartscan
version: 2.6.00.0
На A18 приложение запустилось без Google-аккаунта и показало 100 из
100 бесплатных сканирований. Значит, для лабораторной партии можно
использовать один проверенный APK. Но у sideload-установки
installerPackageName=null, поэтому автоматическое
обновление через Play не гарантировано. Для промышленного парка
правильный путь — managed Google Play/EMM либо контролируемая рассылка и
проверка хэша/версии APK. Копирование APK не отменяет коммерческое
лицензирование Knox Capture.
Установка тестового приёмника
Одна и та же сборка KnoxWedgeTest-debug.apk 1.0.1
установлена на оба телефона. Её SHA-256:
7389be2322a80f9dbc665fe99bc94d5ccdb37db8febbeb39568303acde7d680d
Версия 1.0.1 обнуляет timestamp после каждого
text_changed, поэтому следующий скан не наследует задержку
предыдущего.
2. Профили: зачем они нужны
Knox Capture работает как программный keyboard wedge: камера распознаёт код, а результат передаётся целевому приложению так, будто пользователь ввёл данные с клавиатуры. Поведение определяется профилем:
- какие приложения и Activity используют профиль;
- какие типы штрихкодов распознаются;
- какой режим камеры применяется;
- как форматируются данные;
- добавляются ли Enter, Tab, prefix или suffix.
На главной странице остался системный профиль по умолчанию и появился
отдельный профиль Wedge Test.

Создание тестового профиля
- На странице «Профили» нажать
+. - Выбрать «Создание профиля», а не дублирование существующего.
- Ввести имя
Wedge Test. - В списке приложений найти
Knox Wedge Test. - Выбрать приложение целиком — «Все действия».
- Нажать «Создать профиль».
В готовом профиле тестовое приложение видно в разделе «Приложения».

При необходимости можно привязывать не весь package, а отдельные Android Activity. Это полезно, когда экран приёмки должен завершать скан нажатием Tab, а экран поиска — Enter. Одна Activity может принадлежать только одному профилю.

Полный разбор меню Knox Capture 2.6
Ниже — одно и то же меню на двух протестированных аппаратах.
| XCover7 Pro | Galaxy A18 |
|---|---|
![]() |
![]() |
Knox Capture AR
Это не «ускоритель камеры» и не обязательная часть обычного сканирования. AR накладывает сведения на найденные коды прямо в preview и даёт два сценария:
- Search and find — найти среди множества кодов позицию, совпавшую с поисковым условием;
- View and update — показать или изменить поля товара, если настроены AR template и источник данных/сервер.
AR demo позволяет посмотреть View and update без
backend, но это демонстрация с ограниченным числом сканов, а не готовая
товарная база. AR configuration нужна администратору для
шаблона, источника данных и поведения overlay.
| XCover7 Pro | Galaxy A18 |
|---|---|
![]() |
![]() |
Тестировать приложения
Test mode запускает выбранное приложение и рисует диагностический overlay. В нём видны Activity, применившийся профиль, тип вывода и raw/result data. Это первый инструмент проверки, когда сканер открылся, но строка не попала в нужный экран.

Импортировать
Импорт загружает ранее экспортированные настройки/профили. Подтверждение прямо предупреждает, что текущая конфигурация будет перезаписана. Перед импортом нужно сделать экспорт; APK приложения и лицензия этим файлом не переносятся.

Триггеры сканирования камерой
Здесь включаются Samsung Keyboard, floating button, аппаратные клавиши, двойное нажатие Side key и запуск intent-ом бизнес-приложения. Полный разбор различий между rugged и обычным смартфоном дан в разделе о кнопках ниже.
| XCover7 Pro | Galaxy A18 без специальной клавиши |
|---|---|
![]() |
![]() |
Подключить сканер
Это настройка внешнего аппаратного сканера, а не
камеры телефона. Здесь сопрягается поддерживаемый Bluetooth-сканер;
Samsung также документирует USB wedge devices. Чтобы он участвовал в
профиле, внутри scanner settings включают Hardware scanner.
Наличие Bluetooth-устройства само по себе не превращает камеру в
аппаратный сканер.
| XCover7 Pro | Galaxy A18 |
|---|---|
![]() |
![]() |
Путь вывода
Этот пункт отправляет результат по Bluetooth на сопряжённый компьютер/устройство, эмулируя Bluetooth keyboard. В интерфейсе указано важное ограничение: функция работает с default scanning profile. Это не то же самое, что Android Intent output в своё приложение.
| XCover7 Pro | Galaxy A18 |
|---|---|
![]() |
![]() |
Наложение сканера
Scanner overlay — маленькое изменяемое и перемещаемое окно камеры поверх бизнес-приложения. Оно полезно, когда оператор должен видеть форму во время сканирования. По умолчанию выключено; приложению может понадобиться разрешение рисовать поверх других окон.
| XCover7 Pro | Galaxy A18 |
|---|---|
![]() |
![]() |
Лаборатория производительности
Performance Lab содержит экспериментальные опции для сложной сцены:
- low-light notification — подсказка о недостатке света;
- auto exposure — автоматическая коррекция экспозиции;
- auto zoom — приближение найденного кода.
Auto zoom предназначен для automatic single scan и не применяется к continuous scan и scanner overlay. Эти переключатели нужно A/B-тестировать: они могут помочь на дальнем/тёмном коде, но изменить время стабильной простой сцены.
| XCover7 Pro | Galaxy A18 |
|---|---|
![]() |
![]() |
Удалить
Открывает список пользовательских профилей с чекбоксами и
Все. Системный default profile в список удаления не
попадает. Сам вход безопасен; удаление происходит только после выбора и
подтверждения. В тесте мы ничего не удаляли.
| XCover7 Pro | Galaxy A18 |
|---|---|
![]() |
![]() |
Лицензия
Показывает активацию и остаток бесплатных сканов, позволяет применить временную или коммерческую лицензию. На свежей sideload-установке A18 было 100/100, на XCover после экспериментов — 78/100. Лимит нужно учитывать: диагностические попытки тоже могут расходовать бесплатные сканы.

Поддержка
Содержит Quick help, Guides, FAQ, Courses, Release notes, Privacy, About и Contact support, а также путь к temporary license. Release notes особенно важны при сравнении результатов между версиями scanner engine.

3. Параметры scanner
В профиле открываем Knox Capture в разделе «Сканер».

Для первого теста использовались:
- режим: одиночное сканирование;
- выбор: автоматический;
- камера: задняя;
- zoom:
1.0; - звуковой сигнал: включён;
- вибрация: включена;
- Parse GS1: выключен.
QR уже был включён в наборе по умолчанию. В том же списке были активны Code 128, Code 39, EAN8, EAN13, PDF417, Data Matrix, UPCA, UPCE и Interleaved 2 of 5.

Тот же список на втором устройстве:

Все типы кодов Knox Capture
По актуальной таблице Samsung scan engine поддерживает следующие symbology. Максимальная длина — предел данных, а «по умолчанию» — состояние нового профиля, которое администратор может изменить.
| Тип | Класс | Максимальная длина | Включён по умолчанию |
|---|---|---|---|
| Codabar | 1D | 23 | нет |
| EAN-13 | 1D retail | 13 | да |
| EAN-8 | 1D retail | 8 | да |
| Interleaved 2 of 5 (ITF) | 1D | 50 | да |
| UPC-A | 1D retail | 12 | да |
| UPC-E | 1D retail | 8 | да |
| GS1 DataBar-14 | 1D GS1 | 14 | нет |
| GS1 DataBar Limited | 1D GS1 | 14 | нет |
| Code 128 / GS1-128 | 1D | 41 | да |
| Code 39 | 1D | 33 | да |
| Code 93 | 1D | 50 | нет |
| GS1 DataBar Expanded | 1D GS1 | 46 цифр или 26 буквенно-цифровых | нет |
| Data Matrix | 2D | 3095 | да |
| PDF417 | stacked 2D | 1661 | да |
| QR Code | 2D | 6738 | да |
| Aztec | 2D | 1194 | нет |
Внутри отдельных типов доступны дополнительные настройки: inverted recognition (выключено по умолчанию), обязательные 2/5-digit add-ons для EAN/UPC, возврат UPC-E как UPC-A, Full ASCII для Code 39 и regex validation. Regex позволяет не просто прочитать код, а принять только допустимый формат; отклонённые значения можно подсветить в viewfinder.
Режимы камеры
- Single scan / Automatic — первый уверенно найденный код сразу возвращается;
- Single / Aim or tap — оператор выбирает код при сложной сцене;
- Continuous — поток последовательных результатов;
- Batch / Tap to select — выбор нескольких кодов в одном кадре.
Отдельно настраиваются прямоугольный или laser viewfinder, flash Off/On/Auto, zoom 1–4 и Parse GS1. GS1 parsing следует включать только если приложение ожидает разобранные application identifiers, а не исходную строку.
Что изменилось в последних версиях
В Knox Capture 2.5 новый engine по умолчанию улучшил дальность и скорость, распознавание повреждённых, очень маленьких и длинных кодов; Scandit edition была выведена из использования. Версия 2.6, которую мы тестировали, улучшила чтение при yaw/pitch — когда телефон смотрит на код не перпендикулярно — и обновила SDK до 1.6.2. Наш fixture с поворотом изображения на 32° проверяет roll в плоскости, но не заменяет отдельный физический тест yaw/pitch.
Для воспроизводимого сравнения устройств нельзя одновременно менять код, освещение, дистанцию, trigger и target application.
4. Keyboard output, Enter и Tab
В профиле раздел «Вывод нажатием клавиши» управляет тем, как Knox
Capture передаёт символы. В нашем baseline значения Enter и Tab
оставлены None, поэтому после ABC-1234 не
отправлялся дополнительный управляющий символ.

Для реального workflow обычно выбирают один из вариантов:
- suffix Enter — отправить форму или подтвердить товар;
- suffix Tab — перейти к Quantity или следующему полю;
- prefix/suffix — добавить служебную метку;
- key event delay — замедлить отправку, если старое приложение теряет символы;
- advanced rules — применять преобразования только к определённой symbology, длине или содержимому.
Важно: добавить Enter/Tab в basic formatting недостаточно. В keystroke output нужно также выбрать, передавать его как строку, key event или обоими способами.
5. Назначение кнопок запуска scanner
Путь: главная страница Knox Capture → меню с тремя точками → «Триггеры сканирования камерой».

Кнопка на Samsung Keyboard
Если Samsung Keyboard выбрана клавиатурой по умолчанию, в её toolbar появляется иконка Knox Capture. Последовательность работы:
- открыть бизнес-приложение;
- поставить cursor в нужный
EditText; - нажать иконку Knox Capture в toolbar клавиатуры;
- навести камеру на код;
- дождаться звука и возврата в приложение.
Это был основной trigger в успешном тесте.
XCover key
На rugged-устройстве включён переключатель «Аппаратная клавиша»,
выбран XCover key. Это большая программируемая клавиша на
левой стороне корпуса. По документации Samsung она является стандартным
camera scan trigger на rugged Galaxy. Если системные настройки или EMM
уже назначили этой клавише другую функцию, Knox Capture может не
получить нажатие.
Для ручного теста нужно нажать физическую XCover key, когда target
field имеет focus. ADB-команда input keyevent 1015
использовалась только для диагностики: она мгновенно отправляет key-down
и key-up и не заменяет проверку физической кнопки.
Top key
На моделях с верхней аппаратной кнопкой Knox Capture может предложить
Top key. Опция зависит от конкретного устройства и его key
mapping. На данном экране XCover7 Pro был выбран именно
XCover key.
Side key double press
На поддерживаемых моделях можно назначить двойное нажатие Side/Power key. Доступность пункта зависит от модели и системного назначения Side key.
Floating action button
Floating action button создаёт постоянную кнопку scanner поверх целевого приложения. Она удобна, если нет rugged-клавиш и не хочется открывать клавиатуру. В финальной конфигурации теста floating button выключена: основной сценарий проверял Samsung Keyboard и XCover key отдельно.
Смартфон без XCover/Top key: практический выбор
Galaxy A18 подтвердил, что специальная клавиша не требуется. Его ADB input map содержит только Power и Volume, а меню Knox Capture предлагает четыре рабочих пути: кнопку Samsung Keyboard, floating action button, двойное нажатие Side key и intent из бизнес-приложения.
Рекомендуемый порядок для обычного смартфона:
- Для быстрого внедрения — Samsung Keyboard: cursor уже стоит в поле.
- Для оператора в перчатках/киоска — floating button, если разрешён overlay.
- Для собственного приложения — явная кнопка «Сканировать» и soft-trigger intent.
- Side key double press — только после проверки, что системное назначение кнопки не конфликтует с камерой, SOS или политикой EMM.
Кнопка клавиатуры требует именно Samsung Keyboard по умолчанию. Если парк использует Gboard или закрывает клавиатуру, лучше floating button либо интеграция intent. На rugged XCover отдельная клавиша быстрее и предсказуемее в поточном режиме, но это эргономическое преимущество, а не другой decoder.
Во время отладки выяснилось, что focus терял не Knox Capture, а
первоначальная версия нашего test app: после каждого события она
вызывала ScrollView.fullScroll(View.FOCUS_DOWN). Этот вызов
переносил focus из Barcode в журнал. Исправление — прокручивать без
смены focus:
logScroll.post(() -> logScroll.smoothScrollTo(0, eventLog.getBottom()));После исправления Barcode стабильно оставался focused, Samsung Keyboard не закрывалась, а результат wedge попадал в правильное поле.
6. Фактический QR-тест
Для теста создан QR с payload ABC-1234:
qrencode -o QR-ABC-1234.png -s 20 -m 4 'ABC-1234'Перед попыткой запущен полный logcat:
tools/collect-device-info.sh first-qr-final
tools/start-log first-qr-finalПоле Barcode получило focus, после чего scanner был запущен кнопкой Knox Capture на Samsung Keyboard.

Scanner открыл заднюю камеру. На экране доступны flashlight, смена камеры и кнопка «Готово».

После наведения на QR scanner автоматически закрылся и
ABC-1234 появился в Barcode.
Первый успешный результат подтвердил сам путь передачи данных через keyboard wedge:

После исправления focus и повторного чистого прогона получен финальный результат:

События, записанные приложением:
17:21:28.960 focus_gained field=Barcode
17:21:29.795 key_down keyCode=1102
17:21:31.781 text_changed value=ABC-1234 outputLatencyMs=1985.299843
Важный практический вывод: строка пришла одним
text_changed; приложение не должно рассчитывать, что каждый
символ barcode обязательно появится как отдельный
onKeyDown. Для получения итогового значения нужен
TextWatcher или аналогичный listener изменения текста.
После теста на странице лицензии отображалось 78 из 100 бесплатных сканирований. Начальное значение до всех диагностических попыток отдельно не было снято, поэтому нельзя утверждать, сколько именно попыток израсходовал этот один успешный прогон.

Сравнение XCover7 Pro и Galaxy A18
Методика
Оба телефона использовали Knox Capture 2.6.00.0, один профиль, заднюю камеру, Automatic single scan и одно приложение Knox Wedge Test 1.0.1. Fixture выводился на одном мониторе. Перед trigger телефон уже был направлен на код — как пояснил оператор, он держал камеру в направлении кода и ждал. Поэтому результат — pre-aimed trigger-to-text, а не время поиска этикетки человеком.
В метрику входят запуск preview, экспозиция/автофокус, decoder и keyboard output. Температура, точное положение рук и фаза фокуса не были лабораторно зажаты, так что четыре повтора дают практический ориентир, но не сертификационный benchmark.
| Этап | XCover7 Pro | Galaxy A18 |
|---|---|---|
| Первый холодный чистый QR | 2788.43 ms | 2797.31 ms |
| Тёплые повторы | 922.77; 893.00; 872.36; 869.05 ms | 1103.42; 1153.13; 1112.63; 1112.18 ms |
| Среднее тёплых повторов | 889.29 ms | 1120.34 ms |
| Медиана тёплых повторов | 882.68 ms | 1112.40 ms |
Холодный первый запуск практически совпал: около 2.8 s, то есть его определяет инициализация scanner/camera. После прогрева XCover имел медиану на 229.73 ms ниже; A18 был примерно на 26% медленнее относительно XCover. Это не означает, что любой XCover всегда быстрее любого A18, но в зафиксированной одинаковой сцене разница устойчива во всех четырёх тёплых повторах.
| До скана | Результат |
|---|---|
![]() |
![]() |
![]() |
![]() |
Повреждённые и сложные коды
Все QR содержали ABC-1234 и были созданы с error
correction H. Timeout — 6 s. Inverted recognition оставался выключен,
поэтому провал инвертированного QR — ожидаемый результат настройки, а не
поломка camera engine.
| Fixture | XCover7 Pro | Galaxy A18 | Итог |
|---|---|---|---|
| маленький QR, 28% canvas | 923.28 ms | 1584.45 ms | оба прочитали |
| низкий контраст, 22% | 918.36 ms | 1256.85 ms | оба прочитали |
| Gaussian blur 2.4 px | 945.31 ms | 1269.94 ms | оба прочитали |
| пять белых диагональных царапин | timeout | timeout | не прочитан |
| белое перекрытие центра 160×150 | timeout | timeout | не прочитан |
| QR повёрнут в плоскости на 32° | 892.32 ms | 1169.00 ms | оба прочитали |
| инвертированный QR | timeout | timeout | ожидаемо при disabled inverted |
| чистый Code 128 | 1000.38 ms | 2756.58 ms | оба прочитали |
| Code 128 с gap/царапинами | 972.22 ms | 1839.61 ms | оба прочитали |
| Общий success | 6/9 | 6/9 | одинаковая надёжность этой серии |
Один damaged Code 128 оказался быстрее clean Code 128 на каждом телефоне. Это одиночный прогон с меняющимся фокусом, поэтому нельзя делать вывод, будто повреждение ускоряет decoder. Значимый вывод только бинарный: оба варианта были прочитаны. Для статистики каждого fixture нужно не менее 20 повторов со стойкой, фиксированной дистанцией и освещением.
Скриншоты каждого fixture на обоих телефонах
| Условие | XCover7 Pro | Galaxy A18 |
|---|---|---|
| маленький QR | ![]() |
![]() |
| низкий контраст | ![]() |
![]() |
| blur | ![]() |
![]() |
| царапины | ![]() |
![]() |
| перекрытый центр | ![]() |
![]() |
| roll 32° | ![]() |
![]() |
| inverted | ![]() |
![]() |
| Code 128 clean | ![]() |
![]() |
| Code 128 damaged | ![]() |
![]() |
Аппаратный паспорт и влияние железа
Для обоих телефонов сняты CPU/GPU, RAM, накопитель, экран, все Camera2/HAL ID, датчики, батарея, радио, USB, audio, biometric и input devices. Полный паспорт доступен отдельным документом, а здесь — параметры, связанные со сканированием.
| Параметр | XCover7 Pro (SM-G766B) |
Galaxy A18 (SM-A185F) |
|---|---|---|
| SoC | QTI SM7635 |
Samsung s5e8365 |
| CPU | 4×1.8048 + 3×2.4 + 1×2.496 ГГц | 6×2.002 + 2×2.4 ГГц |
| GPU | Adreno 810 | Mali-G68 |
MemTotal |
5.26 GiB | 3.52 GiB |
| Экран | 1080×2408, 120 Hz | 1080×2340, 90 Hz |
| Основная Camera2 | 4080×3060 readout, max-resolution 8160×6120, sensor 5.2224×3.9168 mm, f/1.8, 3.86 mm, AF 10 D, flash | 4080×3060, sensor 5.2224×3.9168 mm, f/1.8, 3.86 mm, AF 10 D, flash, OIS advertised |
| Широкоугольная | 3264×2448, f/2.2, 1.64 mm, fixed focus | 2576×1932, f/2.2, 1.40 mm, fixed focus |
| Клавиша | отдельный KEY_MACRO17 / XCover key |
только Power/Volume |
Основные камеры по публичным Camera2-параметрам близки, а XCover быстрее. Это наглядно показывает, почему «больше мегапикселей» недостаточно. На итог влияют:
- Оптика, свет и автофокус. Нерезкий или смазанный 1D-код decoder не спасёт; low light увеличивает выдержку и задержку.
- Сенсор и ISP. Размер читаемого кадра, шумоподавление, exposure/AF pipeline и Camera HAL определяют качество картинки, которую увидит Capture.
- SoC. CPU/DSP/GPU/NPU участвуют в запуске pipeline и обработке/декодировании.
- RAM. Влияет прежде всего на то, останутся ли Capture и бизнес-приложение в памяти. Она важнее для cold/warm launch, чем для самого одного decode.
- Накопитель. Почти не влияет на единичное распознавание; важен для старта, установки и записи больших логов/базы.
- Профиль. Чем больше symbology и сложных режимов разрешено, тем шире поиск. Оставляйте только используемые типы и проверяйте результат A/B-тестом.
- Эргономика trigger. Rugged key сокращает действия оператора, хотя engine остаётся тем же классом программного сканера.
Полный обезличенный паспорт: hardware-inventory.md. Численные результаты: metrics.json.
7. Как встроить Knox Capture в своё приложение
Есть четыре уровня интеграции. Для Phase 1 рекомендуется начинать с первого.
Вариант A — чистый keyboard wedge, без Knox SDK
Приложение остаётся обычным Android-приложением:
- использует стандартные
EditText; - не запрашивает Camera permission;
- не содержит ZXing;
- не содержит Knox Capture SDK;
- не распознаёт barcode самостоятельно.
Администратор добавляет package/Activity приложения в профиль Knox Capture. После сканирования приложение видит обычное изменение текста.
Минимальный Kotlin-паттерн:
barcodeEditText.requestFocus()
barcodeEditText.doAfterTextChanged { editable ->
val value = editable?.toString().orEmpty()
// validate and update UI; do not assume per-character KeyEvents
}
barcodeEditText.setOnEditorActionListener { _, actionId, event ->
val enter = actionId == EditorInfo.IME_ACTION_DONE ||
event?.keyCode == KeyEvent.KEYCODE_ENTER
if (enter) submitBarcode(barcodeEditText.text.toString())
enter
}Для формы Barcode → Quantity → Location удобно настроить
Tab после Barcode или управлять переходом самим приложением после
валидации. Не следует автоматически сохранять данные при каждом
text_changed: Knox может передать строку целиком,
пользователь тоже может редактировать её вручную.
Преимущества: минимальная разработка, нет camera code, легко работает с legacy forms и WebView. Недостаток: результат зависит от focus и настроек keyboard output.
Вариант B — soft trigger из интерфейса бизнес-приложения
Если нужна собственная кнопка «Scan», но результат всё ещё можно получать через wedge/настроенный output, приложение отправляет официальный broadcast в Knox Capture. Это не Capture SDK.
val intent = Intent().apply {
action = "com.samsung.android.knox.intent.api.ACTION"
putExtra("com.samsung.android.knox.intent.api.TRIGGER_ACTION", "START")
setPackage("com.samsung.android.app.smartscan")
putExtra("scanner_mode", "Single scan")
putExtra("barcode_selection", "Automatic")
putExtra("parse_gs1", false)
val callback = PendingIntent.getActivity(
this@MainActivity,
0,
Intent(this@MainActivity, MainActivity::class.java),
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
putExtra("pending_intent", callback)
}
sendBroadcast(intent)На стороне Knox Capture нужно включить:
- Options → Camera scan triggers;
- Start scan from business app;
- target package в нужном профиле;
- соответствующий intent output, если он используется.
Knox Capture принимает soft trigger только от foreground-приложения.
Обязательны явный package и PendingIntent, который
используется для проверки отправителя.
Вариант C — intent output вместо keyboard wedge
Если бизнес-логике нужны symbology, raw bytes и scanner type, Knox
Capture может отправлять результат через Android intent. Администратор
настраивает package, action, category и delivery method; приложение
объявляет соответствующую Activity, foreground service или
BroadcastReceiver.
Основной extra:
com.samsung.smartscan.scanned_bundle_list
В bundle доступны, в частности:
com.samsung.smartscan.unprocessed_raw_data
com.samsung.smartscan.unprocessed_string_data
com.samsung.smartscan.symblogy_type
com.samsung.smartscan.scan_source
com.samsung.smartscan.scanner_type
Этот вариант удобнее wedge, когда нужно отличать QR от Code 128, хранить raw payload или принимать несколько результатов программно. Intent filter следует делать максимально узким, а входные extras — проверять перед обработкой.
Вариант D — Knox Capture SDK
SDK нужен, когда приложение должно самостоятельно владеть preview,
получать callback с BarcodeResult, управлять scanner UI или
реализовывать собственную нативную scan-логику. Это уже Phase 2:
требуется отдельный .aar, SDK license и Camera permission в
самом приложении. Для обычного warehouse/retail wedge-flow переходить к
SDK до завершения Phase 1 преждевременно.
8. Автоматизированный сбор данных
Проект содержит Linux и Windows PowerShell варианты:
tools/collect-device-info.sh / .ps1
tools/start-capture-log.sh / .ps1
tools/stop-capture-log.sh / .ps1
tools/collect-failure-report.sh / .ps1
tools/parse-device-info.py
tools/compare-runs.py
Структура результатов:
results/<UTC-date>/<model>/<run-id>/
Для успешного прогона сохранены:
device-summary.jsonиdevice-summary.md;- полный
capture-logcat.txt— 4723 строки; - filtered logcat — 1300 строк, raw файл не изменён;
session.jsonиsession.csv;- скриншоты настройки и результата.
Сбор baseline не изменяет устройство. Очистка logcat выполняется
только явным запуском start-log перед тестом.
9. Что тестировать дальше
- Повторить QR 10 раз и записать success/failure.
- Проверить Code 128, EAN-13, Data Matrix и PDF417.
- Отдельно проверить физическую XCover key и Top key.
- Сравнить Samsung Keyboard, floating button и hardware trigger.
- Настроить Enter, затем Tab, и проверить переход между полями.
- Проверить prefix/suffix и basic data formatting.
- Выполнить 20 попыток на дистанциях 10, 20, 30 и 50 см.
- Повторить неизменный сценарий на втором классе Samsung Galaxy.
- Экспортировать профиль и проверить импорт на другое устройство.
- Только после standalone baseline переходить к trial/commercial license, EMM managed configuration и Capture SDK.
Официальные материалы Samsung
- Overview: как работает keyboard wedge
- Scanning profiles
- Apps and activities
- Scan triggers
- Keystroke output and formatting
- Soft trigger from a business app
- Intent output
- Knox Capture SDK





































