Skip to content

Latest commit

 

History

History
62 lines (32 loc) · 8.5 KB

File metadata and controls

62 lines (32 loc) · 8.5 KB

Требования по направлению Android разработка

Требуется написать мобильное приложение для демонстрации погодных условий конкретного города. Приложение обязательно должно запускаться на ОС Android, однако реализовано оно может быть на удобном языке программирования кандидату из предложенных: Kotlin или Java.

Общие критерии

  • Архитектура мобильного приложения

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

  • Внешний вид

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

  • Адаптивность

    Сегодня абсолютно большая часть трафика идет с мобильных устройств, однако ОС Android работает на множестве устройствах с разными размерами и форм факторами. В связи с этим ваше приложение должно корректно отображаться на максимальном количестве экранов.

  • Инструкции по запуску

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

Требования для разрабатываемого мобильного приложения

Все данные, непосредственно наполнение, необходимо брать с открытого API, расположенного на сайте https://openweathermap.org/api.

Приложение должно быть полностью русифицировано.

Первый уровень

Необходимо создать простое мобильное приложение, общающееся со сторонним открытым API и демонстрирующее погоду на ближайшие 7 дней для введенного в поля для ввода города. Если у мобильного приложения нет на момент ввода названия подключения к сети, то приложение должно предупредить пользователя о необходимости такого подключения.

Города из поиска можно сохранять в приложении на экран со списком городов и короткой информацией о погоде в этом городе. Каждый город можно открыть как выпадающий список или expandable/colapsable view и посмотреть детальную информацию о метеоданных в этом городе.

Элемент отдельного города должен давать возможность перейти на карты Яндекс/Google для отображения местонахождения города. Пользователь должен сам выбрать какой именно тип карт он хочет использовать.

Все данные экранов должны кэшироваться внутри жизненного цикла приложения и при отсутствии доступа к сети интернет, при открытии приложения, экраны не должны быть пусты. (предпочтителен LiveData и Room)

Используйте Material Design и его концепции при проектировании решения

Рекомендуется строить решение на архитектуре MVVM, следуя основным гайдам Google по Architecture Components.

Используйте View/Data Bindings для работы с элементами экрана.

Второй уровень

На втором уровне необходимо добавить возможность авто определения местоположения пользователя по GPS модулю, встроенному в устройство. Так же необходимо оставить получение погоды по интересующему городу, однако приложение должно помогать пользователю при вводе названия при помощи подсказок названий городов по введенному значению.

По выбраному городу из списка с погодой отображайте Weather Map карту, с детализацией погоды в виде карты осадков. Карта должна открываться в масштабе города. Размещение элемента и механизм отображения остается за вами.

Приложение обязано строиться на последних принятых стандартах архитектуры мобильных приложений.

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

Все переходы между экранами должны быть анимированны, хотя бы стандартными анимациями которые уже есть в material design.

Третий уровень

В связи с тем, что мобильное приложение редко разрабатывается без ошибок, то важным этапом разработки является тестирование. Для выполнения третьего уровня от кандидата требуется создание тестов мобильного приложения, а именно тестирование пользовательского интерфейса приложения и тестирование отдельного функционала приложения, в особенности общение со сторонним API. Для разработки тестов пользовательского интерфейса необходимо работать не с данными от стороннего сервиса, а с Mock данными, или данными «заглушками», в угоду скорости работы тестов.

Так же ваше приложение должно использовать Dependency Injection.