ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.04.2023

Просмотров: 308

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

1. Теоретическая часть

1.1 Обзор мобильной ОС Android

1.2 Мэшапы

1.3 Основы программирования на Android

1.3.1 Деятельности

1.3.2 Намерения

1.3.3 Виджеты и видовые окна

1.3.4 Асинхронные вызовы

1.3.5 Фоновые службы

1.4 Архитектура Android приложения

2. Практическая часть

2.1 Выбор инструментов и технологи

2.2 Проектирование прототипа графического интерфейса

2.3 Архитектура приложения

2.4 Варианты использования

2.4.1 Запуск приложения

2.4.2 Выбор фотографии

2.4.3 Обновление данных

2.5 Описание пользовательского интерфейса

2.6 Проектирование и разработка базы данных

2.7 Amazon Storage Services

2.7.1 Обзор Amazon Web Services (AWS)

2.7.2 Обзор Amazon S3

2.7.3 Использование шаблонов

2.7.4 Интеграция с Amazon S3

2.8 Аутентификация пользователя

2.8.1 Создание нового аккаунта

2.8.2 Вход пользователя в аккаунт

2.9 Список необходимых разрешений

2.10 Создание иконки приложения

2.11 Тестирование

Заключение

Список использованной литературы и источников

- в приложении обозначаются в виде экранов и окон.

- сущностные объекты.

- контроллеры, представляющие роли посредников между первыми двумя типами объектов.

Рис. 4. Помехоустойчивая диаграмма варианта использования «Запуск приложения»

2.4.2 Выбор фотографии

Приложение само автоматически выводит на экран доступные снимки для чтения и редактирования. Пользователь выбирает одну из них. Приложение выводит информацию о фотографии с возможностью редактирования описания и/или названия пользователем.

2.4.3 Обновление данных

Основной сценарий

На экране с информацией о фотографии (рис. 10) расположены кнопки «Отменить» и «Сохранить». При нажатии пользователем на «Сохранить», приложение отправляет измененные данные на сервер, принимает их, обрабатывает и обновляет отображаемые данные.

Альтернативный сценарий

а) Отсутствует соединение с Интернет. Система выводит сообщение об ошибке.

б) Сервер недоступен. Система выводит сообщение об ошибке.

2.5 Описание пользовательского интерфейса

Пользовательский интерфейс – это та часть приложения, с которой собственно взаимодействует пользователь, т.е. «внешний вид» приложения.

При запуске приложения, в первую очередь, появляется экран авторизации пользователя (рис. 5). После авторизации, когда в приложении еще нет никаких данных, выполняется главная деятельность – MainActivity. В этом случае появляется экран вида, отображенного на рис. 7. На скриншоте видно, что вверху экрана отображается название приложения, в правом верхнем углу – функция поиска, а внизу располагается главное меню: первая кнопка отвечает за добавление папки, вторая – за добавление изображения, а последняя – за удаление.

Рис. 5,6. Экран авторизации пользователя; Экран регистрации нового пользователя

Рис. 7, 8. Начальный вид приложения; вид экрана при нажатии на кнопку «Добавить фото».

Если же пользователь зашел в систему в первый раз, и у него нет собственного аккаунта, то ему нужно зарегистрироваться (рис. 6).


Чтобы загрузить изображения в приложение, необходимо нажать на кнопку «Добавить фото» (рис. 8). При нажатии, на экране появится инструмент выбора: сделать фото через камеру и загрузить полученное изображение или загрузить фото из галереи. При нажатии на «Загрузить фото», разрешается следующий выбор (рис. 9). После загрузки фото экран будет иметь представление, показанное на рис. 10.

Рис. 9, 10. Окно «Выберите источник»; Вид экрана после загрузки фото

При нажатии на загруженное изображение запускается деятельность PhotoInfoActivity, ответственная за редактирования, описания к фото. В этом случае экран примет форму рис. 11.

Рис. 11. Окно редактирования описания и названия фото.

При нажатии на кнопку «Добавить папку», на экране появится значок папки (рис. 12). При нажатии же на само изображение папки, запустится окно редактирования (рис. 13), названия и описания выбранной коллекции.

Рис. 12, 13. Функция «Добавить папку»; Окно редактирования описания коллекции

2.6 Проектирование и разработка базы данных

Вид основных таблиц базы данных:

Таблица пользователей – USERS

Таблица 1

Атрибут

Примечание

ID пользователя

Обязательное поле, ключ

Электронная почта

Обязательное поле

Пароль

Обязательное поле

Пользователь должен иметь свой уникальный код ID и непустые поля «Электронная почта» и «Пароль».

Таблица для фотографий - PHOTOS

Таблица 2

Атрибут

Примечание

ID фото

Обязательное поле, ключ

ID пользователя

Обязательное поле

Название

Обязательное поле

Описание

Необязательное поле

Путь

Обязательное поле

Дата загрузки

Обязательное поле

Каждая фотография должна иметь также свой уникальный ID код, который используется в качестве ключа. Из всех полей, входящих в таблицу для фотографий, описание обязательным полем не является и может оставаться пустым.

Таблица для коллекций - COLLECTIONS

Таблица 3

Атрибут

Примечание

ID коллекции

Обязательное поле, ключ

ID пользователя

Обязательное поле

Название

Обязательное поле

Описание

Необязательное поле

Путь

Обязательное поле


Каждая коллекция должна иметь свой уникальный ID код, который используется в качестве ключа. Из всех полей, входящих в таблицу для фотографий, описание обязательным полем не является и может оставаться пустым. У каждой коллекции есть только один владелец – пользователь, которого определяют по ID.

В коде программы переменные отражены следующим образом [8]:

public static final String DB_MAIN = "main.db"; //название базы данных

public static final String TABLE_NAME1 = "photos"; //название таблицы с фотографиями

public static final String PHOTO_ID = "id_photo"; //код фото

public static final String PHOTO_TITLE = "title"; //название фото

public static final String PHOTO_DESCRIPTION = "description"; //описание

public static final String PHOTO_PATH = "path"; //путь к изображению

public static final String UPLOAD_DATE = "date"; //дата загрузки

public static final String TABLE_NAME2 = "users"; //название таблицы с информацией о пользователях

public static final String USER_ID = "id_user"; //код пользователя

public static final String USER_EMAIL = "user_email"; // электронная почта пользователя

public static final String USER_PASSWORD = "user_password"; //пароль пользователя

public static final String TABLE_NAME3 = "collections"; //название таблицы с коллекциями

public static final String COLL_ID = "id_collection"; //код коллекции

public static final String USER_ID = "id_user"; //код пользователя

public static final String COLL_TITLE = "title"; //название коллекции

public static final String COLL_DESCRIPTION = "description"; //описание

public static final String COLL_PATH = "path"; //путь к коллекции

Они находятся в классе PhotoDbHelper, наследуемом от абстрактного класса SQLiteOpenHelper, отвечающем за работу с базой данных, т.е. за ее создание, открытие и обновление.

В классе SQLiteOpenHelper по умолчанию содержатся два метода: onCreate(), отвечающий за создание базы первый раз, и onUpgrade(), с помощью которого базу данных можно изменить.

Чтобы сэкономить место в памяти телефона и не сильно нагружать процессор, изображения будут храниться не в базе данных, а в облачном хранилище. В базу данных же будут передаваться пути к ним.

Структура базы данных в наглядном виде представлена в виде схемы (рис. 14).

Рис. 14. Схема взаимодействия сущностей базы данных

2.7 Amazon Storage Services

2.7.1 Обзор Amazon Web Services (AWS)

Amazon Web Services (AWS) – это пластичная, рентабельная, легкая в использовании облачная платформа для хранения данных. Она обеспечивает недорогое хранение данных с легкой доступностью. AWS предлагает варианты хранения для резервного копирования, архивирования и аварийного восстановления файлов.

AWS включает в себя следующие хранилища [4]:


Amazon Simple Storage Service (Amazon S3) – сервис, предоставляющий масштабное и долговременное хранение объектов в облаке.

Amazon Glacier – сервис, предоставляющий недорогое высокоэффективное долговременное хранение архивов в облаке.

Amazon Elastic File System (Amazon EBS) – сервис, предоставляющий масштабное сетевое файловое хранилище для экземпляров Amazon EC2.

Amazon EC2 Instance Storage – предоставляет облочное хранилище для экземпляров Amazon EC2.

AWS Storage Gateway – встроенное хранилище, которое интегрируется с облачным хранилищем.

AWS Snowball – сервис, который переносит большие объемы данных в облако и из него.

Amazon CloudFront – сервис, позволяющий ускорять доставку сетевых ресурсов с помощью кэширования CDN [5].

В данном приложении из этого списка применяется только Amazon S3.

2.7.2 Обзор Amazon S3

Amazon Simple Storage Service (Amazon S3) предоставляет надежное, долговечное масштабное хранилище данных по очень низкой цене. Можно хранить и извлекать любой объем данных в любое время из любой точки Интернета через простой интерфейс веб-сервиса. Можно записывать, просматривать и удалять объекты, содержащие от 1 до 5 Тб данных. Amazon S3 обладает высокой масштабностью, что позволяет одновременно просматривать или записывать данные многим разным клиентам или потокам приложений.

2.7.3 Использование шаблонов

Существует 4 основных случаев использования шаблонов для Amazon S3.

Во-первых, Amazon S3 используется для хранения и распространения веб-контента и мультимедиа. Этот контент может быть напрямую поставлен из Amazon S3, так как каждый объект в Amazon S3 имеет свой уникальный URL-адрес HTML. В качестве альтернативы, Amazon S3 может служить в качестве хранилища для сети доставки контента (CDN), например, как Amazon CloudFront. Пластичность Amazon S3 делает его особенно удобным для веб-хостинга контента, который требует высокой пропускной способности для решения экстремальных скачков спроса. Кроме того, поскольку не требуется резервирования хранилища, Amazon S3 хорошо подходит для быстро растущих веб-сайтов, содержащих насыщенный пользовательский контент, такой как сайты для обмена видео или фотографиями.

Во-вторых, Amazon S3 используется для размещения всего статического веб-сайта. Amazon S3 обеспечивает недорогое, высокодоступное и масштабное решение, в том числе хранение HTML-файлов, изображений, видеозаписей и клиентских скриптов в формате, например, JavaScript.

В-третьих, Amazon S3 используется как хранилище данных для вычислений и крупномасштабной аналитики, таких как анализ финансовых транзакций, анализ трафиков, транскодирование мультимедиа файлов и др. Из-за горизонтальной масштабируемости Amazon S3 можно получать данные из нескольких вычислительных узлов без ограничения одним соединением.


Наконец, Amazon S3 часто используется как высоконадежное, масштабное и безопасное решение для резервного копирования и архивации очень важных данных.

2.7.4 Интеграция с Amazon S3

Для интеграции приложения с Amazon S3 прежде всего необходимо завести AWS аккаунт. После этого в app/build.gradle файл необходимо добавить следующие данные [6]:

dependencies {

compile 'com.amazonaws:aws-android-sdk-core:2.4.0'

compile('com.amazonaws:aws-android-sdk-s3:2.4.0') {

exclude module: 'commons-io'

}

compile('com.amazonaws:aws-android-sdk-cognito:2.4.0') {

exclude module: 'commons-io'

}

}

После добавления данных в файл build.gradle необходимо добавить следующее разрешение AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />

Следующий шаг – получение учетных данных AWS. Чтобы использовать сервисы AWS в мобильном приложении, необходимо для сначала получить учетных данные, используя Identity Amazon Cognito в качестве поставщика учетных данных. Использование поставщика учетных данных позволяет приложению получать доступ к службам AWS без нужды встраивания личных учетных данных в приложение. Также это позволяет установить разрешения, чтобы следить, к каким сервисам AWS пользователи имеют доступ.

До начала работы с Amazon Cognito, необходимо сначала создать пул идентификации (identity pool). Пул идентификаций – это хранилище данных идентификации пользователя, относящегося к своему аккаунту. В каждом identity pool есть настраиваемые роли IAM, позволяющие указать, какие сервисы AWS могут использоваться пользователем приложения. Как правило, разработчик использует один пул идентификации для каждого пользователя.

После создания личного пула идентификации, создается код, создающий поставщика учетных данных для простого интегрирования Cognito Identity с Android приложением. Остается только передать объект поставщика учетных данных в конструктор используемого AWS клиента. Поставщик ученых данных выглядит следующим образом [7]:

// Initialize the Amazon Cognito credentials provider

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(

getApplicationContext(),

"eu-central-1:f2aabdb4-61c4-416d-baaf-aeb6521d418b", // Identity Pool ID

Regions.EU_CENTRAL_1 // Region

);

Далее необходимо добавить следующее в AndroidManifest.xml файл:

<service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"

android:enabled="true" />

Инициализация клиента S3:

AmazonS3Client s3Client = new AmazonS3Client(credentialsProvider);

Для загрузки и скачивания файлов из S3 используется класс TransferUtility. Необходимо передать клиент S3 и контекст приложения в TransferUtility.

Создание экземпляра TransferUtility:

TransferUtility transferUtility = new TransferUtility(s3Client, mContext.getApplicationContext());