Добавлен: 24.04.2023
Просмотров: 319
Скачиваний: 3
При разработке приложения необходимо провести анализ преимуществ и недостатков уже существующих приложений, сходных по тематике. Поэтому, прежде чем приступить к разработке, был проведен анализ ряда как платных, так и бесплатных приложений, после чего были сформулированы основные жалобы пользователей.
2.2 Уточнение требований к системе
На сегодняшний день различные купонно – скидочные сервисы прочно вошли в обиход многих людей. Однако до сих пор не существует ресурса, позволяющего в режиме реального времени не только учитывать и показывать скидки, действующие для определенной группы людей в зависимости от их текущего местоположения, но и предоставлять информационную поддержку выбранных объектов.
Глава 3. Программное приложения для ОС Android
3.1 Архитектура и реализация
Программное приложение для OC Android состоит из набора активностей, каждой из которых соответствует экран приложения. Каждая активность представлена в проекте классом, реализованным на языке java. Каждой активности соответствует xml – кода расположение объектов. При запуске активности системы Android автоматически распознает размер экрана мобильного устройства и приводит выводимый контент в соответствии с разметкой, описанной в xml – файле. Таким образом, одна и та же активность будет выглядеть одинаково независимо от диагонали используемого устройства. Так же для приложения Android должен существовать xml – файл, в котором виде xml - файл, – в котором виде xml – кода будут прописаны минимальные требования к системе, а также активность, вызываемая при запуске приложения.
Приложения работает со встраиваемой базой данных SQLite. SQLite не использует клиент – сервер есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа , а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Таким образом, в качестве протокола обмена используется вызовы функции библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных в единственном стандартном файле на том компьютере, на котором исполняется программа.
В области разработки программного обеспечения используется специальный язык для графического описания объектного моделирования – язык UML. При описании работы приложения создается абстрактная модель системы или под системы, называемая UML – моделью.
Поскольку основными элементами приложения для ОС Android являются активность, то схема работы реализуемого приложения представляет собой схему связей между активностями.
При загрузке приложения основная активность обращается к базе данных, находящийся на диске. Если на диске база данных не обнаружена, то создается пустая база данных и происходят ее обновления через интернет.
Таким образом, пользователь может выбрать интересующее его категории объектов. При выборе категории в меню загружается активность «Категория», которая обращается к базе данных и, считав возможные категории, отображает в списке. При выборе категории загружается активность «Подкатегория». С помощью механизма передачи параметров между активностями ей передается информация о категории. Эта активность тоже обращается к базе данных и выводит все подкатегории. При выборе любой подкатегории формируется запрос на изменения базы данных. Таким образом, база данных всегда будет знать об интересующих подкатегориях и их не придется вводить после каждого перезапуска приложения.
При необходимости получения дальнейшей информации загружается следующая активность, куда передаются ID номер выбранного объекта. Активность представляет собой Tab View, в одном из табов которого находится карта, а в других – текстовые поля.
Список модулей
Функционально, приложение состоит из приведенных ниже модулей (активностей). Активность является схемой представления Android – приложений.
Каждый экран пользовательского интерфейса представлен классом Activity и, по сути, является отдельной формой приложения. Android – приложение способно состоять из нескольких активностей и может переключаться между ними во время выполнения приложения.
- Основная активность содержит объект карты и подменю выбора категории. Она предназначена для определения пользователем собственного местоположения и выбора интересующей категории.
- Активность выбора категории фильтрации содержит несколько элементов управления, которые позволяют уточнить область, интересующие пользователя. После выбора этой области происходит переход в следующую активность. Активность использует шаблон форматирования List View. Работа с базой данных происходит с помощью класса SqlDataHelper.
- Активность выбора объекта интереса содержит список объектов интереса, выбранным ранее критериям. Для этого активность, получив в параметрах уточненную информацию об объектах интереса, формирует запрос к базе данных и на основании полученной от базы данных информации создает динамический список объектов с помощью адаптера. Работа с базой данных происходит с помощью класса SqlDataHelper.
- Активность TableView содержит список объектов из выбранных категорий с указаниями расстояния до них. Активность посылает запрос к базе данных о выбранных категориях и на основании полученной информации формирует новый SQL- запрос для получения всех интересующих объектов. При выборе любого объекта запускается новая активность TabWidget, в качестве параметров которой передается объекта.
Активность TabWidget: На основании идентификатора объекта формируется SQL- запрос для получения расширенной информации об объекте, такой как информация о выставках, скидках, GPS- координатах, адресе и режиме работы.
3.2 Обоснование выбора технологий Java и SQLite
По умолчанию в Android используется SQLite – популярная и простая в освоении реляционная база данных . SQLite поддерживает типы TEXT (аналог String в Java), INTEGER (аналог long в Java) и REAL (аналог double в Java). Остальные типы следует конвертировать, прежде чем сохранять в базе данных.
Библиотека Android содержит абстрактный класс SQLiteOpenHeIper, с помощью которого можно создавать, открывать и обновлять базы данных. Это основной класс, с которым осуществляется работа в проекте. При реализации этого вспомогательного класса скрывает логика, на основе которой принимается решение или обновлении базы данных перед ее открытием. Класс SQLiteOpenHeIper содержит два абстрактных метода: on Create() - метод, который вызывается при первом создании базы данных, а также onUpgrade(), который вызывается при модификации базы данных. В приложении создан собственный класс dipIom_Data_Base, наследуемый от SQLiteOpenHeIper. В этом классе реализованы методы onCreate() и onUpgrate().В них описана в них логика создания и модификации базы данных. Во фрагменте кода, приведенном в Приложении А, описано создание базы данных с помощью метода onCreate, включающее создание трех таблиц –Categori, Subcategory и Objects(см. таблицу 4Приложения). В методе onCreate() таблицы заполняются начальными значениями. При этом метод onCreate вызывается только один раз при создании базы данных. Запрос к базе данных выполняется с помощью вызова SQLiteDatabase::query() В результате выполнения запросов возвращается объект Ccursor, содержащий таблицу с результатами запроса. Cursor предполагает последовательную работу со строками результата. В каждый момент времени активна одна строка, на которую ссылается указатель. Перебирая записи последовательно, можно получить доступ к данным. Все таблицы базы данных указаны в Приложении В.
3.3 Описание функциональности
При запуски приложения на экран отоброжается погруженный фрагмент карты (Index map), на котором отмечено текущее местоположения пользователя. Для более детального просмотра ( примеру, поиск номеров домов ) можно регулировать масштаб карты. При нажатии на кнопку выбора первого меню пользователю сначала предоставляется фильтр объектов по категориям, а затем checkbox, с помощью которого можно отметить интересующие типы объектов данной категории.
Определившись с типом объектов для поиска, пользователю предоставляется список объектов в табличном виде, взятый из базы данных, с указанием адресов. При выборе конкретного объекта можно посмотреть отдельно информацию о нем. Для ориентации пользователя предлагается после просмотра информации об объекте посмотреть выбранный объект на карте и построить маршрут до него с помощью карт Yandex . В случае, если Yandex навигатор не установлен на смартфоне, приложение подгрузить ссылку на бесплатное приложение в Google Play, и предложит скачать его.
3.4 Тестирование
В процесс разработки приложения производилось поэтапное тестирование с целью выявления программных ошибок и несоответствий ТЗ (техническому заданию). Для этого нами были созданы эмуляторы смартфона и планшета с разными диагоналями экрана для разных версий Android . Тестируемый программный продукт последовательно запускал на этих эмуляторах, его поведение анализировалось, и при необходимости по результатам анализа вносились изменения в код. Для тестирования отдельных модулей работы с базой данных в текст программы были внесены специальные функции, позволяющие анализировать базу данных и, при подозрении на ошибку, выводящие в сообщение в системный журнал. Они также известны как юнит-тесты. Например, при изменениях в базе данных проводилась проверка целостности базы данных (проверка на соответствие ключей – индексам), после чего при необходимости выводилось сообщение в системный Iog. Были приведенные ниже тесты.
1.Каждая активность была подвергнута юнит-тестированию с целью выявления ошибок, вызванных несоответствием ожидаемых и полученных параметров. Для этого для каждой активности был создан специальный юнит-класс, посылающий в активность различные верные и неверные параметры. При аномальном поведении активности или ее сбое, мною анализировалось поведение и ошибка исправлялась.
2.В базу данных намеренно вносились недопустимые данные в соответствующие поля, которые могли быть наверно интерпретированы программой. Затем мною анализировалось поведение активность во время обработки недопустимых данных.
3.Приложение было запущено на устройствах, работающих под управлением разных версий Android с целью выявления особенностей работы приложения, запущенного в разных операционных системах.
4.После завершения цикла разработки, программный продукт тестировался на реальных устройствах. По результатам тестирования была добавлена виртуальная кнопка <<Меню>> для устройств, не имеющих аппаратных кнопок.
3.5 Возможные варианты развития программного приложения
Возможными путями развития приложения являются:
1.интеграция приложения со сторонними базами данных;
2.реализация компонентной базы данных (локальной базы данных и базы данных в облаке);
3.реализация возможности загрузки пакетной информации;
4.обновление мест интереса с использование удаленного сервера;
5.реализация интерфейса на различных языках.
Компоненты приложений в Android . android программа приложение
Интересной чертой операционной системы Android является тот факт, что приложение в ней может использовать для своего функционала элементы других приложений, если, конечно, они предоставляют такой доступ. Например, если нашему приложению требуется отобразить прокручиваемый список изображений, а другое приложение уже имеет реализованный подходящий скроллер, открытый для других приложений, то можно просто вызвать его для осуществления этого действия и не разрабатывать свой собственный. При этом код нашего приложения не смешивается с кодом другого и не компонуется с ним. Скорее, он просто запускает некоторый кусок другого файла, когда возникает такая необходимость. Для обеспечения такого принципа работы, система должна быть способна запускать процесс приложения тогда, когда потребуется любая его часть создавать экземпляры java- объектов именно для этой части. Поэтому приложения Android не имеют единой точки входа, как это принято в большинстве систем. Вместо этого их код представляет собой набор некоторых отдельных целостных сущностей, компонент, из которых система по мере необходимости может создавать экземпляры и использовать их. Можно выделить четыре типа таких сущностей - компонент. Поговорим о каждой в отдельности. Activities
Activities представляет собой внешний пользовательский интерфейс для одной операции, которую может совершить пользователь. Если упростить, то это просто один текущий экран как некоторая единица активности, своего рода кадр с одним пользовательским действием. Здесь и далее будет использоваться термин activity без перевода, как некоторое имя собственное. Хотя дословный перевод << активность >> или <<действие>>, хорошо передает общий смысл компонента. Например, activity может предоставить список пунктов меню, которые может выбрать пользователь или отобразить фотографии с их подписями. Или другой например – приложения для мгновенного обмена сообщениями может использовать одно activity для того чтобы отобразить лист контактов, другое-чтобы создать сообщение для выбранного контакта, третье-чтобы посмотреть историю сообщений или выполнить настройки и так далее. Все activity текущего приложения работают вместе и формируют единый пользовательский интерфейс, однако при этом они независимы между собой. Каждое из них реализовано как подкласс базового класса Activity, обеспечивающего создание окна, в котором программист может поместить визуальный интерфейс. Приложение может состоять из всего одного activity или сразу из нескольких, как упомянутый ранее в качестве примера мессенджер. Какими именно будут activity и сколько их будет, зависит от конкретного приложения и его дизайна. Как правило, одно из activity помечается как первое, это означает, что оно будет предоставлено пользователю при запуске приложения. Одно activity может запускать другое. Таким образом, переход от одного activity к другому осуществляется тогда, когда текущее activity вызывает следующее. Визуальное содержание окна строится с помощью иерархии визуальных компонентов (или представлений)- объектов, производных от базового класса View. Каждый компонент представляет собой просто прямоугольное пространство внутри окна. Родительские компоненты содержат дочерние и организуют их расположение. Иерархию компонент можно представить в виде дерева, а те элементы, которые находятся в самой нижней его части (”листья”) и не имеют дочерних компонентов, обрисовывают прямоугольные области и ожидают действий пользователя на этом участке. Таким образом, осуществляется интерактивное взаимодействие с пользователем. К примеру, такое представление может отображать на экране маленькую иконку и инициировать какое-нибудь действие, когда пользователь на нее нажмет. В операционной системе Android уже есть набор готовых везуальных компонент, которые доступны для использования разработчиками. Набор включает в себя кнопки, текстовые поля, полосы прокрутки, меню, флажки-переключатели и многое другое. Content providers Данный компонент управляет наборами данных, которые приложения предоставляют другим. Эти данные могут храниться в файловой системе, базах данных SQLite, в сети, или в любом другом постоянном месте, к которому приложения может иметь доступ. Посредством content provider другое приложения может запрашивать данные и, если выставлены соответствующие разрешения, изменять их. Например, система Android содержит content provider, который управляет пользовательской информацией о контактах. Он позволяет любому приложению, обладающему соответствующему правами вызывать составляющие этого компонента для того, чтобы считывать, записывать или изменять информацию о конкретном человеке. В более общем случае, content provider можно использовать для чтения и записи данных, которые используются приложением и не являются открытыми для других. Например, приложение Note Pad использует такой компонент для сохранения сделанных записей.