Добавлен: 24.04.2023
Просмотров: 306
Скачиваний: 2
СОДЕРЖАНИЕ
1.1 Обзор мобильной ОС Android
1.3 Основы программирования на Android
1.4 Архитектура Android приложения
2.1 Выбор инструментов и технологи
2.2 Проектирование прототипа графического интерфейса
2.5 Описание пользовательского интерфейса
2.6 Проектирование и разработка базы данных
2.7.1 Обзор Amazon Web Services (AWS)
2.8 Аутентификация пользователя
2.8.1 Создание нового аккаунта
2.8.2 Вход пользователя в аккаунт
2.9 Список необходимых разрешений
Введение
Еще в далеком прошлом, до появления сотовых телефонов, мы могли только печатать фотографии, а цифровые снимки были невозможны. Готовые фотографии подписывали и помещали в фотоальбом.
Теперь уже, в настоящее время, сотовые телефоны прочно внедрились в нашей повседневной жизни благодаря широкому спектру функций. В наши дни,сотовый телефон-это Интернет,звонки,видео связи и также камера.
За счет того, что сейчас уже люди перестали печатать фотографии, разработчики делают приложения, в которых можно добавлять описание к запечатленным снимкам. В разрабатываемых приложениях подразумевается набор фотографий или папок, которые можно редактировать, как сами названия, так и описания.
Телефоны на базе Android становятся все более распространенными. Хорошо известен тот факт, что самую большую часть мобильной индустрии занимают операционные системы (ОС) iOS и Android.
Рис. 1. Данные фирмы Gartner (2017 г).
По данным исследовательской фирмы Gartner на 2017 год, Android завоевал большую часть мирового рынка, заняв первое место с 80.7% (рис. 1). Исходя из изучения мною этой фирмы, я выбрала свое приложение [2].
Также, поскольку оперативной памяти телефона не всегда хватает для того, чтобы сохранить все необходимые документы, приложения и фотографии, люди все больше начали пользоваться услугами облачных хранилищ. Облачное хранилище (или просто облако)- это такая модель хранения данных, которая позволяет хранить данные на сервере, а обращаться к ним через Интернет.
Согласно данным, предоставленными [3] на 16.05.2016, самые известные и популярные облачные хранилища в России можно представить в виде следующих данных:
Google Drive
Microsoft OneDrive
Dropbox
Mega
Яндекс.Диск
Облако@mail.ru
Amazon Web Services
pCloud
iCloud Drive
4shared
Для своего приложения я выбрала iCloug Drive, занимающий 9-е место выше в таблице. В данном случае, это очень удобная система, так как это не просто облачное хранилище, а целый набор всемирных сервисов, которые помогут при разработке мобильного приложения.
1. Теоретическая часть
1.1 Обзор мобильной ОС Android
Операционная система Android – это открытая платформа, которая не привязана к одному провайдеру. Это помогает Android захватить рынок, так как любой производитель и провайдер может создавать и продавать устройства, поддерживающие эту операционную систему. Исходный код Android доступен каждому для изучения или модифицирования. Это позволяет дать широкий простор для создания удобных интерфейсов и приложений для Android-устройств [1].
ОС Android может использоваться на устройствах с разными размерами экрана и другими техническими характеристиками, поэтому она поставляется с набором инструментов, которые помогают приложению адаптироваться под определенное устройство. Политика Google более жесткая. Например, если приложение требует наличие фронтальной камеры, то это приложение в Android Market увидят телефоны только с фронтальной камерой.
1.2 Мэшапы
Мэшап — это веб-приложение, соединяющее данные из нескольких источников в один инструмент. Например, можно создать мэшап, использующий камеру и геолокацию для размещения изображений на карте. Такой прием часто можно встретить в социальных сетях.
С помощью встроенных в Android библиотек API, можно легко использовать данные возможности для создания собственного приложения с необходимыми функциями.
1.3 Основы программирования на Android
Android приложение пишется на языке Java, собственно при разработке необходимы также документы XML. Язык Java используется здесь не в полнофункциональном варианте, а только в небольшом подмножестве, которое иногда называют виртуальной машиной Davlik. В этом подмножестве не используются те классы Java, которые не могут быть использованы или не имеют смысла при разработке приложений на мобильные устройства.
1.3.1 Деятельности
Android приложение включает в себя одну или несколько деятельностей. Деятельность можно представить в виде контейнера, содержащего пользовательский интерфейс и код, который его запускает.
1.3.2 Намерения
Намерения (intents) составляют систему сообщений на Android. Намерение состоит из действия (action) и данных, которые нужно выполнить. Действие – это то, что должно быть совершено при получении намерения и данных, с которыми есть необходимость работать.
Намерения используются при запуске деятельности и при коммуникации между различными частями Android системы. Приложение может получать или отправлять намерения.
При передаче намерения в основном отправляется сообщение системе сделать что-либо, например, открыть то или иное приложение.
Если просто отправить намерение, это не означает, что что-то произойдет автоматически. Для этого необходимо зарегистрировать приемник намерений (intent receiver), который получает намерение и указывает Android системе, что нужно сделать: выполнить задачу в новой деятельности или запустить другое приложение. Если же имеется несколько приемников для получения intent, можно создать инструмент, который позволяет пользователю самому выбрать необходимое действие. Одним намерением могут быть найдены несколько приемников, поэтому пользователь лично определяет action, которое нужно выполнить. Например, при долгом нажатии на изображение в галерее, появляется инструмент выбора, который предлагает отправить картинку через e-mail или социальные сети, редактировать или удалить и др.
Если система не может найти подходящее намерение, а инструмент выбора не был создан разработчиком, то приложение потерпит крах и выдаст ошибку исполнения. Поэтому важно следить за тем, чтобы выборы для намерений, не нацеленных на другие деятельности в данном приложении, были созданы.
1.3.3 Виджеты и видовые окна
Видовое окно (view) представляет собой базовый элемент управления интерфейса в виде прямоугольной области, где можно рисовать и обрабатывать события. Примерами видовых окон являются: контекстное меню (ContextMenu), меню (Menu), вид (View), поверхность рисования (SurfaceView).
Виджеты (widgets) – это более продвинутые элементы пользовательского интерфейса, например, флажки с переключателями, где можно выбрать одно из нескольких возможных состояний. Виджеты являются теми элементами управления, с которыми взаимодействует пользователь. Виджетами являются: кнопка (Button), выбор даты (DatePicker), галерея (Gallery), флажок (CheckBox) и др.
Таким образом, видовые окна и виджеты являются элементами управления пользовательского интерфейса, однако первые способны воссоздать не одну, а несколько функций.
1.3.4 Асинхронные вызовы
Прежде чем перейти к понятию асинхронных вызовов, нужно ясно понимать, что такое поток.
Потоком называется совершение в одном приложении нескольких операций одновременно. Асинхронным поток называется поток, который совершается независимо от других потоков, в фоновом режиме.
Асинхронные потоки применяются при совершении задач, которые занимают много времени, например, загрузка файла из Интернета, отображение аудиозаписи или просмотр видеоклипа, т.е. то, что заставляет пользователя ждать. Если пользователю необходимо подождать решения какой-либо задачи, то лучший выход из ситуации – создать асинхронный поток, чтобы дать возможность пользователю заниматься в это время чем-нибудь другим.
В большинстве случаев специалисты рекомендуют выносить в фоновый поток воссоздание тех задач, которые сильно загружают процессор, или выполняются более 5-6 секунд.
1.3.5 Фоновые службы
Служба – это такое приложение, которое работает в фоновом режиме и которому не требуется наличие пользовательского интерфейса. Примером службы на компьютере является антивирусная программа, а в ОС Android – аудиоплееры, которые воспроизводят аудиозаписи в фоновом режиме, позволяя пользователю пользоваться в то же время другими приложениями.
1.4 Архитектура Android приложения
Android приложение состоит из нескольких деятельностей (Activities), которые занимают весь экран. Приложение же переключается между ними в зависимости от выбранной пользователем задачи.
Деятельности состоят из видовых окон (View). Общую структуру стандартного Android приложения можно представить в виде схемы (рис. 2).
Рис. 2. Структура Android приложения
2. Практическая часть
Прежде чем приступить непосредственно к разработке приложения, необходимо определить, какие понадобятся инструменты разработки, и установить их.
2.1 Выбор инструментов и технологи
В подготавливаемом приложении используются следующие программные средства и технологии:
Java JDK (Java Development Kit) – набор для разработки приложений на языке Java, который включает в себя компилятор Java, библиотеки, утилиты, документацию и др.
Android Studio – среда разработки от Google, которая является официальной средой разработки для Android приложений на базе IntellIJ IDEA.
SQLite – реляционная база данных, по умолчанию использующаяся в Android.
Amazon S3 – облачное хранилище объектов, предназначенное для хранения файлов любых типов и возможности доступа к ним через Интернет.
Genymotion – быстрый и удобный эмулятор Android, содержащий настроенные образы Android, что существенно упрощает тестирование на нескольких Android устройствах с целью выявления ошибок и оптимизации приложения.
Firebase – платформа для разработки мобильных и веб-приложений. В разрабатываемом приложении используется для идентификации пользователей.
2.2 Проектирование прототипа графического интерфейса
Нужно создать подсознательно понятный для пользователей графический интерфейс приложения.
Основные структуры при создании интерфейса:
Деятельности (Activities)
Ресурсы (файлы XML) – включают в себя компоновки, строки, изображения, стили
Файл AndroidManifest.xml – содержит информацию о настройках конфигурации
Класс View – базовый класс для всех компонентов пользовательского интерфейса. Отвечает за прорисовку изображения и обработку событий.
Файл R.java – отвечает за идентификацию ресурсов.
Стоит помнить, что приложение может содержать несколько деятельностей (экранных форм), одна из которых определяется как главная и отображается при первом запуске приложения. Также деятельности одного приложения независимы друг от друга.
Для создания виджетов существует 2 способа:
XML-файл компоновки, содержащий описание графических элементов и их характеристик.
Динамическое создание виджетов в программном коде класса экранной формы.
Оба метода имеют свои достоинства и недостатки, поэтому на практике их применяют вместе, что и было сделано в данном приложении.
2.3 Архитектура приложения
В подготавливаемом приложении были выделены следующие структуры:
LoginActivity – деятельность, которая запускает экран инициализации пользователя
MainActivity - та деятельность, которая запускается после LoginActivity
PhotoInfoActivity – деятельность, которая запускается при нажатии на загруженное в приложение изображение, содержащая информацию о названии и описании фото, а также возможность их редактирования и сохранения.
Обе эти структуры связаны с моделью для загрузки данных из базы данных и с сервера (в данном случае, Amazon).
В общем виде структура приложения показана на рис. 3.
Рис. 3. Общая структура приложения
2.4 Варианты использования
2.4.1 Запуск приложения
Основной сценарий
В главном интерфейсе системы пользователь выбирает приложение и запускает. Запускается экран инициализации пользователя, затем главный экран приложения. Приложением проверяется, пуста ли база данных, получение и обработка данных. Выводит список доступных фотографий.
Альтернативный сценарий
а) Если база данных пуста, приложение получает данные на сервере.
б) Если получение данных с сервера по каким-либо причинам недоступно, то система выводит на экран сообщение «Сервер недоступен».
Помехоустойчивая диаграмма для данного варианта использования представлена на рис. 4. Данная диаграмма выражает взаимосвязь между классами и выполняемыми действиями. Каждое такое действие на диаграмме соответствует шагу варианта использования.
Используемые в диаграмме обозначения: