Приложение для рентгеновского детектора
Мобильное приложение для работы с рентгеновскими детекторами, для быстрого обнаружения дефектов и создания специальных файлов для передачи их в дальнейшую обработку.
7bits, 2023
Дизайн
Разработка
QA
Проблема
Ранее дефектоскописты использовали планшеты на Windows для получения и первичной оценки промышленных рентгеновских снимков.

На планшетах запускали программу для ПК, но из-за сложных условий работы и невысокой мощности планшетов возникало много проблем.
Задачи проекта
Зафиксировать требования и описать пользовательские истории с критериями приемки для различных функций
Спроектировать экраны приложения
Получать и изменять входные данные от детекторов
Реализовать инструменты для работы с изображением: поворот, отражение, линейки и калибровка для них
Исследовать требования заказчика и пользователей
Работать с внешним SDK для детекторов в Android
Реализовать сохранение файлов в формате Diconde
Продумать обработку большого объема данных на устройстве Android, оптимизировать этот процесс
Создать основу базы знаний по проекту
Работать с кодом на C++ в Android
Примененять коррекции изображения: фильтры, гамма-коррекция, изменение видимого уровня серого (ROI)
Вычислять параметры изображения: уровень серого в точке, мин. и макс. уровни серого, SNR и SNRn и др.
Стек технологий
- Android, Jetpack Compose
- Hilt
- Room, SQLite
Как работает приложение
Основа работы приложения — взаимодействие с аппаратной частью. Смартфон подключается к детектору по Wi-Fi и получает доступ к API детектора.
API позволяет смартфону подавать команды на детектор, получать снимки, изменять параметры детектора и проводить калибровки.
Большая часть работы происходит на двух основных экранах: экран получения снимка и экран редактирования.
Экран редактирования
Второй экран содержит инструменты редактирования изображения. Баланс белого, линейки, профиль уровня серого, параметры шума и другие инструменты.
На первом экране мы проводим базовую калибровку детектора, получаем снимки и работаем с файлами.
Экран получения снимка
Как мы улучшили приложение
На всем процессе проектирования приложения, мы предлагали варианты улучшения пользовательского опыта.
В общении с заказчиками мы выясняли как именно операторы работают с объектами контроля, изучали пользовательский путь вне приложения и предлагали улучшения. Чтобы приложение не просто стало заменой планшетам, но и сделало работу операторов более безопасной и понятной.
Работа с инструментами
В работе с инструментами мы учитывали неблагоприятные условия. Поэтому сделали большие контроллеры и высокие «усики» у измерительных инструментов, чтобы было проще измерять дефекты.
Экран маркировки
Маркировка имеет огромное значение в дефектоскопии. Без маркировки снимки не считаются действительными и не подлежат анализу.
Мы вынесли работу с маркировкой на отдельный экран и добавили входы на него из разных точек приложения, чтобы пользователь точно не ошибся с маркировкой и не забыл о ней.
Экран проверки снимка
Мы предложили добавить еще один слой между получением снимка и сохранением его в памяти.
Это позволяет не сохранять в памяти снимок с неправильной маркировкой, дефектами или ошибками в параметрах съемки.
Как мы это разработали
MVVM
Jetpack Compose
Model-View — ViewModel
Jetpack Compose используется для построения декларативных пользовательских интерфейсов на Android.
Он предоставляет простой и эффективный способ описания UI с использованием языка Kotlin, что облегчает разработку и поддержку приложения.
Room
Room используется для работы с базой данных SQLite на Android. Этот компонент Jetpack обеспечивает удобный доступ к базе данных через объектно-реляционное отображение (ORM), что упрощает операции с данными и способствует сохранению и загрузке информации в приложении.
Hilt
Hilt используется для обеспечения управления зависимостями в Android-приложении. Он интегрируется с Dagger 2, предоставляя удобные аннотации для внедрения зависимостей и делая код более чистым и модульным.
Design
В проектировании интерфейса мы учитывали особенности работы дефектоскопистов, часто неблагоприятиные условия, снег, дождь солнце, морозы. Также приложение было спроектировано для особой модели смартфона с учетом его особенностей. Мы добавили дублирование основных функций физическими кнопками на смартфоне.
В ходе проектирования мы также учитывали сложные моменты в интерфейсе, старались отлавливать возможные ошибки операторов и дорабатывать на их основе интерфейс приложения.
MVVM применяется в Android-проекте для эффективной организации кода. Он обеспечивает отделение бизнес-логики (Model) от пользовательского интерфейса (View), а ViewModel управляет взаимодействием между ними, что улучшает тестируемость, читаемость и сопровождаемость кода.