Использование QR-кодов. Использование камеры для сканирования QR-кода В 1994 году японская компания «Denso-Wave» представила матричной код – QR-код, который позволяет зашифровать до 7089 цифр или до 4296 символов. Основное достоинство QR-кода – легкое распознавание сканирующим устройством, что дает возможность широкого использования в различных сферах. QR-коды уже около 15 лет пользуются популярностью в Японии, и около 5 лет популярны в Европе и США. До России они дошли относительно недавно, но их уже можно встретить на рекламных вывесках, и телевизионной рекламе, а так же на продуктах массового производства.
В приложении QR-коды используются для доступа к геоконтекстным данным и представляют собой метки, связанные с информацией об институтах, находящихся в здании и о событиях, проводящихся в аудиториях.
Сканирования QR-кода осуществляется основной камерой телефона. Для использования основной камеры устройства, необходимо прописать разрешение на использование этой функции в манифесте приложения. После перехода приложения на экран сканирования, инициализируется камера и запускается процесс захвата изображения с камеры и передача его в функцию библиотеки для декодирования QR-кода. Если функция вызывает исключение – это означает, что декодирование не удалось – изображение не являлось QR-кодом или не удалось декодировать QR-код – в таком случае, функция захвата изображение рекурсивно запускается заново. После того, как удалось распознать QR-код и декодировать его, результат сканирования передается параметром на следующую страницу приложения.
Для декодирования QR-кодов использовалась библиотека ZXing. Данная библиотека была выбрана в связи с множеством положительных отзывов в сети Интернет, бесплатным распространением и хорошей документацией. Библиотека встраивается в приложение с помощью с помощью NuGet - расширения среды разработки Visual Studio, которое упрощает добавление, обновление и удаление библиотек в проекты Visual Studio.
Работа с картой
Для отображения карты был использован стандартный элемент управления Map (Карта). Страница карты необходима для отображения местоположения зданий институтов и соотнесения его с местоположением пользователя. Для использования GPS-служб устройства, необходимо было прописать в манифесте приложения данную возможность. А перед определением местоположения пользователя, необходимо объяснить пользователю, для чего приложение использует его местонахождение, и попросить подтверждения того, что пользователь согласен, чтобы приложение использовало его местоположение. Данное требование указано в требованиях к сертификации приложений для магазина Windows.
Определение местоположения осуществляется асинхронно, благодаря чему, карта все так же остается доступной для пользователя во время определения местоположения. Для визуализации того, что местоположение определяется, используется стандартный элемент управления под названием ProgressIndicator, отображаемый над системной панелью телефона. После того, как алгоритм определения местоположения завершит свою работу, генерируется событие, и карта центрируется по координатам местоположения пользователя.
В приложении реализована возможность изменять режимы карты и включать или выключать дополнительные функции.
Интерфейс и функционал
Интерфейс приложения составляют страницы с уникальным функционалом и правилами перехода. На рисунках 7 – 16 изображены UML диаграммы вариантов использования (use case diagrams) подсистем приложения.
Рисунок 7, UML- диаграмма общей схемы навигации между страницами в приложении.
Рисунок 8, UML-диаграмма экрана поиска.
Рисунок 9, UML-диаграмма вариантов использования результатов поиска.
Рисунок 10, UML-диаграмма вариантов использования информации об институтах и кафедрах.
Рисунок 11, UML-диаграмма использования карты.
Рисунок 12, UML-диаграмма использования страницы сканирования QR-кодов.
Рисунок 13, UML-диаграмма вариантов использования результатов сканирования QR-кода.
Рисунок 14, UML-диаграмма вариантов использования экрана списка событий.
Рисунок 15, UML-диаграмма создания нового события с авторизацией.
Рисунок 16, UML-диаграмма добавления нового события без авторизации.
|