- void on Click (Dialog Interface dialog Interface, int i) - метод интерфейса Dialog Interface. On Click Listener, вызываемый при нажатии на кнопку диалогового окна.
Класс SettingsActivity
Данный класс ассоциирован с активити настроек и служит для отображения и работы с опциями приложения. Класс содержит единственный метод void on Create (Bundle saved Instance State), описанный выше. В данном методе создаётся фрагмент Settings Fragment, который заполняет всю полезную площадь активити.
Фрагмент Settings Fragment, в свою очередь, является наследником специального класса Preference Fragment, предоставляющего удобные средства для работы с настройками приложения. Класс Settings Fragment также содержит единственный метод void on Create (Bundle saved Instance State), сходный по назначению с вышеописанным методом активити. В данном методе фрагмент создаёт и размещает элементы управления на основе специального XML-файла, описывающего разметку. Помимо этого, здесь же инициализируются обработчики событий для визуальных элементов, представляющих ту или иную опцию.
Класс Camera Activity
Данный класс ассоциирован с активити управления камерой. Основными его функциями являются отображение на экране видеопотока с камеры, работа с настройками камеры, получение снимков, а также обработка поворотов экрана телефона.
Константы:
- PROPERTY_SIZE_INDEX - константа-ключ для доступа к опции размера изображения.
- PROPERTY_FLASH - константа-ключ для доступа к опции вспышки.
Поля:
- camera - поле типа Camera, содержащее ссылку на объект-камеру.
- cameraId - поле типа Camera, содержащее идентификатор камеры.
- Bottom Panel - поле типа Linear Layout, содержащее ссылку на панель с кнопками выбора снимка.
- Bottom Panel Hidden use Auto Focus - флаг типа boolean, показывающий состояние панели bottom Panel.
- Camera Button Layout - поле типа Relative Layout, содержащее ссылку на панель-контейнер для кнопки снимка.
- Camera Button - поле типа Button, содержащее ссылку на кнопку снимка.
- Camera IconImage - поле типа Image View, содержащее ссылку на иконку кнопки снимка.
- Orientation Observer - поле типа Orientation Event Listener, содержащее ссылку на обозреватель смены ориентации дисплея.
- Icon Orientation - поле типа int, содержащее текущую ориентацию дисплея.
- Picture Sizes - поле, содержащее массив элементов типа Camera. Size, соответствующих трём (или менее) минимальным разрешениям камеры телефона.
- Picture Size Index - поле типа int, содержащее позицию текущего разрешения снимка в списке pictureSizes.
- preferences - поле типа Shared Preferences, содержащее ссылку на модуль настроек.
- Use Auto Focus - флаг типа boolean, указывающий на возможность использования автофокуса при съёмке.
- Use Flash - флаг типа boolean, указывающий на необходимость использования вспышки при съёмке.
- Has Flash - флаг типа boolean, указывающий на наличие вспышки у телефона.
- Action Bar - поле типа ActionBar, содержащее ссылку на панель меню.
- Settings Button - поле типа Button, содержащее ссылку на кнопку настройки разрешения снимка.
- Settings Image View - поле типа Image View, содержащее ссылку на иконку кнопки настройки разрешения снимка.
- Log Out Button - поле типа Button, содержащее ссылку на кнопку выхода из аккаунта.
- Log OutImage View - поле типа Image View, содержащее ссылку на иконку кнопки выхода из аккаунта.
- Flash Button - поле типа Button, содержащее ссылку на кнопку настройки вспышки.
- Flash Image View - поле типа Image View, содержащее ссылку на иконку кнопки настройки вспышки.
- Popup Window - поле типа Popup Window, содержащее ссылку на всплывающее окно со списком доступных разрешений снимка.
- Popup Window Center - поле типа int, содержащее горизонтальную координату центра всплывающего окна popupWindow.
- Surface Holder - поле типа Surface Holder, содержащее ссылку на специальный объект для взаимодействия с визуальным компонентом для отображения потокового видео.
Методы:
- int find Back Facing Camera () - метод, осуществляющий поиск идентификатора основной камеры телефона.
- Camera try Get Back Camera () - метод, возвращающий объект-камеру, при условии её наличия.
- void close Camera () - метод, высвобождающий объект-камеру.
- int get Rotation Value () - метод, осуществляющий
- boolean get Flash Availability () - метод, вычисляющий угол поворота камеры.
- Camera. Size[] get Picture Sizes (Camera camera) - метод, возвращающий список из трёх или менее минимальных разрешений камеры.
- void set Picture Size (int index) - метод, устанавливающий одно из разрешений из списка picture Sizes.
- void set Flash Mode(boolean use Flash) - метод, включающий и выключающий вспышку.
- void set Up Camera Parameters () - метод, осуществляющий установку необходимых для съёмки параметров камеры.
- void reset Camera Preview (Surface Holder holder) - метод, осуществляющий переинициализацию визуального компонента для вывода видеопотока с камеры.
- void onItem Click (Adapter View<?> adapter View, View view, int i, long l) - метод интерфейса List View. On Item Click Listener, осуществляющий обработку кликов по элементам списка List View.
- void navigate To Login Activity () - метод, осуществляющий переход к активити авторизации.
- void navigate To Data Activity () - метод, осуществляющий переход к активити метаданных.
- void surface Created (Surface Holder surface Holder) - метод интерфейса Surface Holder. Callback, вызываемый при изменении размеров элемента управления Surface View.
- void surface Changed (Surface Holder surface Holder, int i, int i2, int i3) - метод интерфейса Surface Holder. Callback, вызываемый при уничтожении элемента управления Surface View.
- void surface Destroyed (Surface Holder surface Holder) - метод интерфейса Surface Holder. Callback, вызываемый при создании элемента управления Surface View.
- void on Picture Taken (byte[] bytes, Camera camera) - метод интерфейса Camera. Picture Callback, вызываемый при получении снимка.
- void on Auto Focus (boolean b, Camera camera) - метод интерфейса Camera. Auto Focus Callback, вызываемый при срабатывании автофокуса.
- byte[] correctImage(byte[] data) - метод, преобразующий полученный с камеры снимок к формату JPEG.
- Bitmap rotate Image (Bitmap bitmap, int degree) - метод, осуществляющий поворот фотографии в соответствии с ориентацией дисплея.
- void swap Elements Visibility() - метод, осуществляющий смену элементов управления между режимами съёмки и сохранения снимка.
- void rotate Popup (int to Orientation) - метод, осуществляющий поворот всплывающего окна po pupWindow.
- void try Start Rotation (View view, int toOrientation) - метод, осуществляющий поворот одной иконки.
- void rotateImages (int to Orientation) - метод, осуществляющий поворот всех иконок.
- Rotate Animation get Animation (int to Orientation) - метод, возвращающий объект-анимацию для поворота иконок.
- void update Flash Icon() - метод, осуществляющий отображение корректной иконки, отображающей режим вспышки.
- void set Up Orientation Event Listener() - метод, возвращающий объект-слушатель orientation Observer.
- Popup Window set Up Popup Window() - метод, создающий дочерние элементы управления для всплывающего окна popup Window.
- Array List<String> get Human Readable Headers() - метод, преобразующий набор разрешений камеры к понятному для человека виду.
- void set Popup List Content (List View list, final Array List <String> human Readable Headers) - метод, заполняющий значениями всплывающее окно popup Window.
- Popup Window get Popup Window (View view, int width, int height) - метод, создающий всплывающее окно popup Window.
Класс Data Activity
Данный класс ассоциирован с активити метаданных и служит для отображения и работы с метаданными фотографии, а также инициирует сохранение снимка на сервере и уведомляет пользователя о прогрессе выполнения.
Константы:
- ACTION_CODE_UPLOAD - идентификатор интента, ассоциированного с действием загрузки фото.
- ACTION_CODE_SAVE - идентификатор интента, ассоциированного с действием отправки метаданных и сохранения фото.
- ACTION_CODE_LOCATION - идентификатор интента, ассоциированного с действием получения координат.
- CITIES_LOADER - идентификатор загрузчика списка городов.
- STREETS_LOADER - идентификатор загрузчика списка улиц.
- STORES_LOADER - идентификатор загрузчика списка магазинов.
- CATEGORIES_LOADER - идентификатор загрузчика списка категорий.
- REPORT_DIALOG_TAG - тег диалогового фрагмента, используемого для отображения информации об ошибках.
- PROGRESS_DIALOG_TAG - тег диалогового фрагмента, используемого для предоставления шанса повторного сохранения при ошибке.
- TRY_AGAIN_DIALOG_TAG - тег диалогового фрагмента, используемого для отображения информации об ошибках.
- SKIP_LOCATION_DIALOG_TAG - тег диалогового фрагмента, используемого для предоставления возможности пропустить этап получения координат.
Поля:
- Loader Manager - поле типа Loader Manager, содержащее ссылку на менеджер загрузчиков.
- View Mapping - поле, содержащее массив идентификаторов типа int, задающих объекты для отображения данных в списке.
- sendItem - поле типа Menu Item, содержащее ссылку на пункт меню для отправки снимка.
- Send Button - поле типа Button, содержащее ссылку на кнопку отправки снимка.
- Progress Dialog - поле типа Progress Dialog Fragment, содержащее ссылку на диалоговый фрагмент, используемый для отображения прогресса выполнения задачи.
- Report Dialog - поле типа Report Dialog Fragment, содержащее ссылку на диалоговый фрагмент, используемый для отображения информации об ошибках.
- Try Again Dialog - поле типа Two Option Dialog Fragment, содержащее ссылку на диалоговый фрагмент, используемый для предоставления возможности пропустить этап получения координат.
- Skip Location Dialog - поле типа Two Option Dialog Fragment, содержащее ссылку на диалоговый фрагмент, используемый для предоставления возможности пропустить этап получения координат.
- Has Problem Check Box - поле типа Check Box, содержащее ссылку на флажо, показывающий наличие проблем.
- Comments Edit Text - поле типа Edit Text, содержащее ссылку на тестовое поле для ввода комментария.
- Last FileId - поле типа String, содержащее идентификатор последнего загруженного снимка.
- Successfully Saved - флаг типа boolean, указывающий на успешное сохранение снимка.
- preferences - поле типа Shared Preferences, содержащее ссылку на модуль настроек.
Методы:
- void try Begin Upload() - метод, осуществляющий валидацию пользовательского ввода перед операцией авторизации, а также отображающий результаты валидации.
- void begin Upload() - метод, запускающий процесс асинхронной загрузки фото. В качестве завершающего метода используется on Activity Result.
- void begin Get Location() - метод, запускающий процесс асинхронного получения координат. В качестве завершающего метода используется on Activity Result.
- void begin Save (Location location) - метод, запускающий процесс асинхронного сохранения фото.
- void end Save()- метод, вызываемый при окончании сохранения.
- void setup Spinners() - метод, инициализацию выпадающих списков.
- String get Spinner Value (String valueName) - метод, позволяющий получить текущее значение из выпадающего списка по имени колонки из таблицы БД, которая ассоциирована с определённым списком.
- int getSpinner ValueId (Spinner spinner) - метод, позволяющий получить первичный ключ записи БД, значение которой выбрано в выпадающем списке.
- void update Store Adapter() - метод, осуществляющий инициализацию выпадающего списка магазинов.
- void update Street Adapter() - метод, осуществляющий инициализацию выпадающего списка улиц.
- void update City Adapter() - метод, осуществляющий инициализацию выпадающего списка городов.
- void update Categories Adapter() - метод, осуществляющий инициализацию выпадающего списка категорий.
- void restore Spinner (Spinner spinner, Cursor cursor) - метод, разблокирующий выпадающий список для ввода.
- void restore Selection (String field Name) - метод, восстанавливающий последнее выбранное значение для выпадающего списка.
- Loader <Cursor> on Create Loader (int i, Bundle bundle) - метод интерфейса Loader Manager. Loader Callbacks <Cursor>, осуществляющий инициализацию загрузчков.
- void on Load Finished (Loader<Cursor> cursor Loader, Cursor cursor) - метод интерфейса Loader Manager. Loader Callbacks<Cursor>, вызываемый при готовности загрузчика отдать данных.
- void on Loader Reset (Loader<Cursor> cursor Loader) - метод интерфейса Loader Manager. Loader Callbacks <Cursor>, вызываемый при сбросе загрузчика.
- Progress Dialog Fragment get Pro gress Dialog() - метод, возвращающий диалоговый фрагмент, используемый для отображения прогресса выполнения задачи.
- Report Dialog Fragment set Report Dialog (int title Id) - метод, возвращающий диалоговый фрагмент, используемый для отображения информации об ошибках с заданным заголовком.
- Report Dialog Fragment set Report Dialog (int titleId, int messageId) - метод, возвращающий диалоговый фрагмент, используемый для отображения информации об ошибках с заданным заголовком и телом сообщения.
- Two Option Dialog Fragment get Try Again Dialog()- метод, возвращающий диалоговый фрагмент, используемый для предоставления возможности пропустить этап получения координат.
- Two Option Dialog Fragment get Skip Location Dialog()- метод, возвращающий диалоговый фрагмент, используемый для предоставления возможности пропустить этап получения координат.
Класс WorkerService
Данный класс является наследником класса Inent Service и представляет собой сервис фоновой обработки операций со встроенной очередью обработки сообщений. Класс содержит набор строковых констант вида «ACTION _XXX», используемых со схожей целью, что и аналогичные целочисленные константы в классах-активити. Однако, если целочисленные константы используются для идентификации необходимого результата, то строковые константы используются для идентификации вызываемого метода.
Константы:
- ACTION_UPLOAD_PICTURE - идентификатор интента, запускающего операцию загрузки фото.
- ACTION_SAVE_PICTURE - идентификатор интента, запускающего операцию сохранения фото.
- PENDING_INTENT_FIELD - ключ по которому доступен ожидающий интент для обратной связи с активити-инициатором.
- SERVICE_ERROR - код ошибки, означающий ошибку сервиса. Может быть передан в вызывающую активити в метод on Activity Result в качестве параметра result Code.
- UNKNOWN_HOST - код ошибки, означающий неверный адрес сервера. Может быть передан в вызывающую активити в качестве данных внутри интента.
- HOST_NOT_SPECIFIED - код ошибки, означающий отсутствие связи. Может быть передан в вызывающую активити в качестве данных внутри интента.
- IO_ERROR - код ошибки, означающий ошибку ввода/вывода. Может быть передан в вызывающую активити в качестве данных внутри интента.
- SERVICE_UPLOADING - идентификатор нотификации в строке состояния при переходе сервиса в привилегированный режим.
Поля:
- Pending Intent - поле типа IWeb Client, содержащее ссылку на ожидающий интент для обратной связи с активити-инициатором.
- Web Client - поле типа Pending Intent, содержащее ссылку на веб-клиент.
- Host Name - поле типа String, содержащее имя сервера.
Методы:
- void on Create() - метод вызываемый после создание сервиса. Аналогичен конструктору, однако в отличие от него может общаться ко всем системным компонентам.
- void on Handle Intent (Intent intent) - основной метод сервиса. Извлекает очередной интент из очереди сообщений и передаёт его на обработку сервису. В зависимости от идентификатора интента будет вызван один из описанных далее методов.
- void logIn (Intent intent) - метод, осуществляющий операцию авторизации, а также, в случае успеха, запускающий обновление кэша.
- void upload Picture() - метод, осуществляющий загрузку фото.
- void savePicture (Intent intent) - метод, осуществляющий сохранение фото.
- void send Pending (Intent intent) - метод, осуществляющий отправку ожидающего интента для обратной связи с активити-инициатором.
- void repor tError(String message) - метод, осуществляющий отправку ожидающего интента с заданным сообщением об ошибке.
- Notification
get Upload
Notification()- метод,
создающий нотификацию необходимую для перехода сервиса в привилегированный
режим.
3.3 Описание классов взаимодействия с данными
Одним из требований к реализуемому клиенту была минимизация используемого траффика. Для выполнения этого требования было решено реализовать кеширование данных на стороне клиента. Android SDK предоставляет возможность упрощённого создания и сопровождения базы данных, поэтому довольно удобно использовать простые реляционные структуры для сохранения информации на клиенте. В реализуемом дипломном проекте за кэширование данных отвечают классы из пакета data.