Android. Базовый уровень


Содержание
Цукерберг рекомендует:  Путину предложили пересадить чиновников на Linux

Как начать разрабатывать под Andro >
    Переводы, 21 ноября 2020 в 18:16

Многие программисты хотят заняться разработкой приложений под Android. Но немногие представляют, какие шаги здесь надо предпринять. Эта подборка призвана помочь новичкам в освоении Android-разработки.

Начало работы

Новичкам в программировании поможет наша вводная статья.

Для новичков в Android Google сделал хорошее введение в Android на своём сайте. Также есть замечательный краудсорсинговый гид по Android. Кроме того, есть курс от Google на Udacity.

Если у вас возникают проблемы с Android, крайне рекомендуется сперва проверить StackOverflow. Он создан для ответов на технические вопросы и даже является официальной платформой Q&A для Android.

Статьи по Android вы всегда можете найти у нас на сайте.

Я хочу начать разрабатывать под Android. С чего мне начать?

Первый и важнейший шаг в разработке под Android – это изучение Java и XML. Как только вы более менее познакомитесь и с тем, и с другим, изучите официальную Документацию по Android и пройдите несколько уроков, пока не почувствуете себя достаточно уверенным для создания собственных проектов. Удачи!

Нужно ли мне Android-устройство для разработки?

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

Какую IDE мне лучше использовать?

  • Android Studio — официально поддерживаемая IDE для разработки под Android. Именно она используется в современных руководствах и видео, в том числе и от Google.
  • Eclipse была основной IDE для разработки под Android на протяжении многих лет, поэтому большинство устаревших уроков, ресурсов, видео и скриншотов сделаны на ней.
  • IntelliJ IDEA был альтернативой Eclipse, но в настоящее время разумнее начать с Android Studio. Android Studio – это ответвление IntelliJ IDEA, так что вы получите все её преимущества плюс бонусы под Android.

Может, мне стоит забыть про Java и начать учить Kotlin?

Google теперь официально поддерживает Kotlin как язык разработки под Android, но это не значит, что про поддержку Java можно забыть. В ближайшем обозримом будущем документация, инструменты, новые фичи платформы будут поддерживать как Kotlin, так и Java. Хотя Kotlin — более молодой язык с некоторыми приятными особенностями, вы всё ещё можете создавать отличные приложения на Java. Выбор зависит только от вас, но если вам не принципиально или вы новичок, то, возможно, лучше сделать выбор в пользу Kotlin.

Какое устройство/ОС/т.д. мне использовать?

По этим вопросам был проведён вопрос на Reddit, результаты можно посмотреть здесь.

Ресурсы

Здесь представлены основные ресурсы по обучению разработке под Android на английском языке. Это далеко не полный список, но достаточный для старта.

Официальные ресурсы Android

Дизайн

  • Шпаргалки по Android для графических дизайнеров
  • Красивости для Android – вдохновение для создания графических интерфейсов под Android.

Рассылки

  • Android Weekly – замечательная рассылка, помогающая быть в курсе последних разработок Android.

Коллекции библиотек

Инструменты

  • Genymotion – крайне полезный и функциональный эмулятор.
  • Android Asset Studio – отличная коллекция инструментов для создания/редактирования иконок, изображений и т.д.
  • Codota Plug-in для Android Studio – замечательные примеры кода прямо в Android Studio.

Примеры open source приложений

Идеи для приложений

Итак, у вас есть идея для приложения… Люди каждый день об этом пишут. Но перед тем, как просить помощи в реализации проекта, нужно ответить на следующие ключевые вопросы:

Каков мой бюджет?

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

Какая у меня маркетинговая стратегия?

Вы собираетесь использовать обычное сарафанное радио или готовы платить за известность?

Какой список задач у данного проекта?

А также, какие есть ограничения? Сколько мне нужно разработчиков?

Откуда будут приходить/где будут храниться данные?

А также, как они будут использоваться? Разработана ли у меня соответствующая политика приватности?

Есть ли цель заработать денег?

Если да, как вы собрались её достигать? Через рекламу, IAP, подписки, платные приложения? Всё вышеперечисленное?

Как вы будете платить вашим разработчикам?

Есть ли у вас капитал или вы собрались платить им после того, как приложение начнём приносить доход? Часто независимые контрактники требуют часть полной стоимости авансом. Большинству разработчиков неинтересно разделение доходов, за исключением случаев, когда они сами вкладываются в приложение.

Какой будет способ тестирования?

На какой тип устройства вы собираетесь устанавливать его? Как много итераций вам нужно? Каких людей вы хотите вовлечь?

Как скоро вы хотите опубликовать приложение в магазине?

Это однозначно повлияет на конечный доход.

Будете ли вы требовать или предлагать регистрацию/интеграцию с социальными сетями?

Продумайте реализацию этой функциональности.

Какова ваша целевая аудитория?

Это нишевое приложение или оно может быть распространено повсюду?

Реализована ли уже моя идея?

Если да, как я могу улучшить её или что в ней отсутствует?

Что делать с идеями для приложений, если вы не разработчик?

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

«Росбанк», Москва, до 60 000 ₽ (до налогов)

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

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

Поймите, что разработка требует значительных усилий. Представьте, что разработчик работает полный рабочий день (8 часов) на протяжении 2 месяцев, чтобы создать ваше приложение. И вы также работаете полный рабочий день. Что вы делаете в это время? Если ваша работа, по вашим представлениям, заканчивается раньше, то нужно пересмотреть идею. В этом сценарии разработчик выполняет большую часть работы, и вы, честно говоря, бесполезны. То, что вы можете дать после того, как приложение закончено, не имеет особого значения и не будет мотивировать разработчика заканчивать продукт.

Пересмотр вашей идеи

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

  • Распределяйте работу настолько справедливо, насколько это возможно.
  • Фокусируйтесь прежде всего на ваших навыках.
  • Ваша загрузка должна примерно равняться 2 месяцам полноценной работы. Для простых приложений загрузка, конечно, может быть меньше. Вы можете попросить сообщество (например, наше) помочь в оценке трудозатрат.

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

  • Представьте всё. Не беспокойтесь, что идею могут украсть. Поскольку теперь идея завязана на ваших навыках, а распределение работы более справедливое, разработчику выгоднее работать с вами вместо того, чтобы делать всё самому. Используйте картинки и диаграммы, где это уместно, чтобы описать идею. Не упускайте важных деталей или того, что вы считаете тайным преимуществом. Скорее всего, оно таковым не является, и замалчивание этих деталей сделает идею размытой и недостаточно убедительной.
  • Что вложите вы? Очень важно это обозначить.
  • Каких взаимоотношений вы ищете? Долевое участие? Будете платить разработчику? При долевом участии нужно принять факт того, что разработчик может изменять приложение, и вам нужно будет вместе работать над тем, чего вы оба хотите. Не только вы обладаете видением того, какое направление является наилучшим.

Возможно, вам надо будет пересмотреть свою идею и внести изменения. И повторить это много раз.

Стать Android Developer

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

На старте приобрел два курса по Android разработке от школы LoftSchool.
В общем поставил цель к концу лета устроиться на работу на позицию Junior android developer!

Критерий завершения

Получить работу Junior Android Developer

Пройти курс Andro >

  1. Открытие курса
  2. Git и Github
  3. Интерфейс пользователя
  4. Отображение списков
  5. Фрагменты
  6. Интернет

  7. Material Design
  8. Авторизация
  9. Более сложные интерфейсы
  10. Кастомные View
  11. Бонусный вебинар
  12. Публикация приложения
  13. Закрытие курса

Пройти курс Andro >

  1. Открытие курса
  2. Tasks and Back Stack
  3. Сохранение состояния Activity
  4. Архитектура приложения. MVP
  5. Базы данных. SQL
  6. Базы данных. ROOM
  7. RxJava
  8. Архитектура приложения. MVVM
  9. Практический вебинар (Доделываем вкладки конвертера и кошельков)
  10. Практический вебинар (Доделываем экран кошельков)
  11. Базы данных. Realm
  12. Service
  13. JobScheduler и Notifications
  14. Бонусный вебинар
  15. Закрытие курса

Прочитать книгу Head First Java

  1. Погружаемся
  2. Путешествие в Объектвилль
  3. Свои переменные нужно знать в лицо
  4. Как себя ведут объекты
  5. Особо мощные методы
  6. Использование библиотеки Java
  7. Прекрасная жизнь в Объектвилле
  8. Серьезный полиморфизм
  9. Жизнь и смерть объектов
  10. Числа имеют значение
  11. Опасное поведение
  12. Очень графическая история
  13. Улучшай свои навыки
  14. Сохранение объектов
  15. Устанавливаем соединение
  16. Структуры данных
  17. Выпусти свой код
  18. Распределенные вычисления
  19. Приложение А
  20. Приложение Б

Пройти видео курс Java от простого к сложному

Технотрек по Java от Mail.ru

Прочитать книгу Head First Andro >

  1. С головой в пучину
  2. Приложения, которые что-то делают
  3. Предъявите свой интент
  4. Из жизни активностей
  5. Представление начинается
  6. Расставить по местам
  7. Обо всем по порядку
  8. В поисках короткого пути
  9. Модульная структура
  10. Разные размеры, разные интерфейсы
  11. Вложение фрагментов
  12. Виджеты и жесты
  13. Переработка отходов
  14. Подальше положишь.
  15. Работа с базами данных
  16. Получение данных
  17. Выполнение в фоновом режиме
  18. К вашим услугам
  19. Связаны вместе
  20. Другие макеты
  21. Система сборки Gradle
  22. Android Runtime
  23. Android Debug Bridge
  24. Ускорение работы
  25. Десять важнейших тем (которые мы не рассмотрели)

Технотрек по Andro >

Посмотреть лекции яндекса

Прочитать книгу Kotlin for Andro >

  1. Introduction
  2. Getting ready
  3. Creating a new project
  4. Classes and functions
  5. Writing your first class
  6. Variables and properties
  7. Anko and Extension Functions

  8. Retrieving data from API
  9. Data Classes
  10. Parsing data
  11. Operator overloading
  12. Making the forecast list clickable
  13. Lambdas
  14. Visibility Modifiers
  15. Kotlin Android Extensions
  16. Application Singleton and Delegated Properties
  17. Creating an SQLiteOpenHelper
  18. Collections and functional operations
  19. Saving and requesting data from database
  20. Null safety in Kotlin
  21. Creating the business logic to data access
  22. Flow control and ranges
  23. Creating a Detail Activity
  24. Interfaces and Delegation
  25. Generics
  26. Settings Screen
  27. A first walk into coroutines
  28. Testing your App
  29. Extra concepts
  30. Conclusion

Базы данных

  1. SQLite
  2. Room
  3. Realm

Andro >

  1. Retrofit 2
  2. Dagger 2

Прочитать книгу Head First Design Patterns

  1. Добро пожаловать в мир паттернов
  2. Объекты в курсе событий
  3. Украшение объектов
  4. Домашняя ОО-выпечка
  5. Уникальные объекты
  6. Инкапсуляция вызова
  7. Умение приспосабливаться
  8. Инкапсуляция алгоритмов
  9. Управляемые коллекции
  10. Состояние дел
  11. Управление доступом к объектам
  12. Паттерны паттернов
  13. Паттерны в реальном мире
  14. Приложение: Другие паттерны

Прочитать книгу Head First Object-Oiented Analysis and Design

  1. С чего начинаются хорошие программы
  2. Дайте им то, что они хотят
  3. Я тебя люблю, ты мой идеал. Теперь изменись
  4. Программы для реального мира
  5. Все течет, все меняется, Зарядка для программ
  6. «Меня зовут Арт. И я архитектор»
  7. Навести порядок в хаосе
  8. Не стремитесь к оригинальности
  9. Программы пишутся для заказчика
  10. Все вместе
  11. Десять главных тем (не рассмотренных в книге)
  12. Говорим на языке ООП

Прочитать книгу Reactive Programming with RxJava

  1. Reactive Programming with RxJava
  2. Reactive Extensions
  3. Operators and Transformations
  4. Applying Reactive Programming
    to Existing Applications
  5. Reactive from Top to Bottom
  6. Flow Control and Backpressure
  7. Testing and Troubleshooting
  8. Case Studies
  9. Future Directions
  10. More HTTP Server Examples
  11. A Decision Tree of Observable Operators

unit тесты

Разобраться с основными функциями Andro >

Andro >

  • A basic understanding of layouts and views
  • Activities and their lifecycle
  • User input
  • Getting data from the web
  • Storing data

  • Collection views (like ListViews) and Adapters (default and custom)
  • Action Bar
  • Accommodating different screen sizes and densities

Andro >

  • Project-level build.gradle
  • Module-level build.gradle
  • Finally, settings.gradle

Andro >

Написать клиент-серверное приложение

Написать Погодный виджет

Разработать простой виджет рабочего стола, для отображения погоды на сегодняшний день. Источником данных может быть любой интернет-сервис: например http://informer.gismeteo.ru/ (смотреть раздел xml-информер).

Требования по функционалу:
1. Размер виджета должен быть 4х1 ячеек;
2. Виджет должен предусматривать наличие кнопки с функционалом «Обновить данные»

Попытать выбить тестовое задание у какой нибудь компании

GEO TASK (Andro >

Приложение состоит из 3х экранов

1. Сплеш (картинка с неоднородным фоном на весь экран)
2. Активити ввода начальной и конечной точки
Содержит:
а) 2 таба Откуда и Куда.
Внутри таба:
• Поле ввода для поиска при вводе геоенкодер определяет вариант и координаты (до 7 штук)
• Список найденных вариантов (видимы 3 шт остальное скролл). Клик по элементу выбирает его.
• Карта показывает место выбранного варианта на карте
б) Кнопка поиска пути. При нажатии переход
на Форму результата.
3. Форма результата:
Карта, смасштабированная таким образом что включает:
• Местоположение пользователя по геолокации
• Путь от точки Откуда в точку Куда, полученный с помошью прямого запроса (HTTP GET) к Google сервису DirectionsAPI (https://developers.google.com/maps/docu . irections/).
Ответ от DirectionsAPI принимаем в виде JSON. Нас интересуют только координаты детали пути не важны. Отрисовываем в виде Polyline черного цвета.
После получения ответа от сервиса выше карты пишем:
Found или Unknown в зависимости от ответа Google.

Общие требования:
Портрет и ландшафт
Разрещения от 480х800 до 1080х1920
Android 2.3 4.2
Желательно оформление в стиле Android 4.x (Actionbar etc)

Facebook Client (Andro >

Реализовать приложение, которое подключается к публичному API произвольной соц. сети (предпочтительно FB/VK) или к другому сервису, который может отдать данные для их последующего отображения.

Если сервис отдает данные с координатами (например, instagram/foursquare), сделать возможность отображения полученных данных на карте.

Приложение должно:
1. Выводить список друзей/follower/фотографов, с фотографиями и минимальным описанием.
2. Выполнять просмотр более детальной информации/списка фотографий.
3. Выполнять просмотр больших фотографий (фотографии должны кешироваться на устройстве).

Тестовое задание Andro >

1) Простой клиент для социальной сети.

Задача:
Разработать клиентское приложение для просмотра своих фотоальбомов в социальной сети (на выбор facebook или vkontakte).

Требования по функционалу:
1. Логин/форма входа для авторизации в соц. сети.
2. Список фотоальбомов: таблица со списком. Ячейка таблицы – миниатюра обложки альбома и его название. Миниатюры должны подгружаться асинхронно, на время подгрузки отображать индикатор круглый загрузки.
3. Фотографии: таблица со списком фотографий. Ячейка таблицы – миниатюра фотографии, ее название, дата загрузки. Миниатюры также должны загружаться асинхронно. При нажатии на миниатюру открывается окно ее просмотра.
4. Просмотр фотографии на весь экран. Реализовать отображение дополнительной информации по фотографии.
5. Поддержка навигации по фотографиям в полноэкранном режиме с помощью жестов.

Тестовое задание Andro >

2) Виджет для рабочего стола

Задача:
Разработать простой виджет рабочего стола, для отображения случайной картинки с сервиса http://demotivators.to/ .

Требования по функционалу:
1. Размер виджета должен быть не мене 3х3 ячеек и предусматривать растягивание.
2. Виджет должен предусматривать наличие кнопки с функционалом «Обновить данные».
3. Предусмотреть конфигутор виджета с настройками частоты обновления демотиваторов и лимита загружаемых данных в сутки.
4. По тапу на картинке должна стартовать Activity с возможностью полноэкранного просмотра демотиватора, просмотра комментариев и рейтинга, а также возможностью сохранить картинку.
5. Реализовать логику получение данных с помощью Service.

Программирование [LoftSchool] Android-разработка. Базовый курс

Arsenn32

Arsenn32

Автор: LoftSchool
Название: Android-разработка. Базовый курс

Описание:
Ваша будущая профессия

Junior
Android-разработчик
Пройдя данный курс, вы овладеете базовым набором знаний начинающего андроид-разработчика.

Вы уже сможете устроиться на работу и применять полученные знания на практике.

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

Данные о cредней зарплате android-разработчиков взяты с сайта Яндекс.Работа

Курс включает в себя

  • Прокачку знаний Java
  • Android SDK
  • Работу с Rest API
  • Использование элементов Material Design
  • Среда разработки Android Studio
  • Базовую работу с Gradle
  • Профилирование и отладка Android Debug Bridge
  • Git & Github

Чему вы научитесь, пройдя курс

  • Создавать современные Android-приложения
    Используя лучшие передовые инструменты, соблюдая гайдлайны Google.
  • Быстро реализовывать свою идею
    И запускать новый проект в срок от 7 до 21 дня.
  • Использовать необходимые инструменты для построения приложений
    Как Android SDK, так и лучшие сторонние решения.
  • Создавать клиент-серверные приложения
    Причём так, чтобы пользователь не жаловался, что «приложение зависает, пока данные грузятся».
  • Создавать свои кастомные виджеты
    Красиво рисовать на них и еще какой-нибудь красивый текст.
  • Работать с API социальных сетей
    «Google+, Facebook и т.д.».

Подробнее:

[Geekbrains] Программист Andro >

Курс: «Программист Andro >комментарием: «Отличный курс из-под большого хайда для любимого ресурса«. Материал может быть удален по запросу правообладателя. Оцениваем курс

Описание курса:

В 2014 году количество смартфонов в России впервые превысило количество покупаемых телефонов, а Android-устройства заняли более 60% отечественного рынка, и 80% рынка мирового. Разработка приложений под Android сегодня требуется не только крупным компаниям — она выводит на качественно новый уровень любой бизнес — от доставки пиццы до службы такси. И деловая среда уже поймала эту волну. С 2012 по 2014 год количество вакансий для Android-разработчиков выросло на 110%, а с потребностью вырос и авторитет программистов, которые получили возможность не цепляться за первое предложение, а выбирать из предложенных вакансий наиболее оптимальную.

Многие разработчики по природе своей любят исправлять и совершенствовать устройства. Android в этом смысле — самая свободная и открытая система, как нельзя лучше приспособленная для адаптации и модернизации. Да и процесс запуска собственного приложения в Google Play обходится дешевле и осуществляется проще, чем у конкурентов.

Ключевые навыки:

  • Знание Java Core
  • Знание Andro >Что Вы будете изучать
    Никаких скучных теорий. Семь практических курсов.
  • Урок 1. Базовые понятия
    Обзор курса, Введение в платформу Java, Настройка среды, Простейшая программа Hello world в блокноте, Запуск и выполнение, Среды разработки(IDE), Знакомство со средой разработки Eclipse, Idea, Hello world в среде Eclipse, Idea
  • Урок 2. Типы данных
    Примитивные типы данных, Объявления переменных и их инициализация, Константы, Стек,куча и где хранятся данные в Java, Преобразования типов в Java, Основные операторы в языке Java: арифметические, логические, битовые, строковые, Работа с символами и строками, Вывод результатов работы программы на консоль
  • Урок 3. Управление потоком выполнения и циклы
    Основы процедурного программирования, Ветвления, Циклы, Проектирование методов, Конструкторы, Хорошие и плохие названия, Параметры методов, Перегрузка методов, Рекурсия
  • Урок 4. Введение в ООП
    Классы и объекты, Абстракция, Инкапсуляция, Наследование, Полиморфизм, Модификаторы доступа
  • Урок 5. Продвинутое ООП
    Принципы проектирования и основы языка UML, Диаграммы классов, Абстрактные классы, Интерфейсы клонирования, Множественное наследование в Java, Программирование в соответствии с интерфейсом, а не реализацией
  • Урок 6. Collеction Framework
    Виды контейнеров в Java: List, Map,Set, Основные реализации контейнеров, Основные приемы использования контейнеров, Проход по элементам коллекции, шаблон проектирования Iterator, Сравнение элементов коллекции, Сортировка элементов коллекции
  • Урок 7. Исключения
    Концепция обработки исключений, Сравнение традиционного механизма обработки ошибок с механизмом, обработки исключений, Блок try-catch-finally, Типы исключений, Стандартные исключения в Java и их роль, Выброс исключения из метода
  • Урок 8. Написание программы «Сетевой чат»
    Основы работы с библиотекой Swing, Основы работы с файловой системой в Java, Написание игры «Морской бой» с нуля — в течении 7и уроков, Написание программы «Сетевой чат», Написание программы «simple Web-server»

Android. Уровень 1. Разработка под мобильные устройства

  • Урок 1. Введение в платформу Android
    Знакомство. Программа курса Общие сведения о платформе Android, историческая справка Архитектура платформы Android Этапы создания приложений, от идеи до GooglePlay Установка и настройка необходимых инструментов Основные компоненты Android SDK Обзор среды разработки (Eclipse и AndroidStudio) Пример простого приложения «Hello, Android!»
  • Урок 2. Activity и ресурсы приложения
    Основные компоненты Android приложения Модель безопасности и разрешения Структура Android проекта Жизненный цикл Activity и методы обратного вызова Использование LogCat Ресурсы в Android приложении (cтроки, размеры, цвета, массивы) Альтернативные ресурсы и квалификаторы Локализация приложения
  • Урок 3. Разработка пользовательского интерфейса
    Особенности проектирования UI для мобильных платформ Различия в проектировании UI для телефонов и планшетов Основные характеристики экранов Принципы построения UI в Android Макеты и компоненты контейнеры Обзор стандартных элементов UI в Android Создание разных версий дизайна для различных конфигураций устройства
  • Урок 4. Меню и Диалоги
    Меню в приложении Android ActionBar, меню опций и контекстное меню элементов Создание вложенных меню Принципы построения диалоговых окон в Android Класс DialogBuilder Диалоги AlertDialog, TimePickerDialog и DatePickerDialog Создание собственного диалогового окна
  • Урок 5. Коллекции в Android
    Введение в концепцию MVC (Model-View-Controller) Коллекции в Android и класс AdapterView Использование компонента ListView Различные источники данных для списков Работа с элементами списка Класс BaseAdapter, создание собственного адаптера Работа с компонентом GridView Работа с компонентом Spinner
  • Урок 6. Activity и класс Intent
    Механизм намерений в Android Добавление нового Activity в приложение Явный вызов Activity и класс Intent Передача параметров через объект Intent Получение результата работы Activity Неявный вызов Activity Работа со стандартными приложениями (Телефон, SMS, Почта, Браузер) Переопределение класса приложения
  • Урок 7. Хранение данных
    Обзор возможностей хранения данных в Android Сохранение промежуточного состояния Activity Класс SharedPreferences и настройки приложения Работа с внутренней (защищенной) памятью Получения состояния карты памяти Работа с файлами на карте памяти Разработка класса для работы с текстовыми файлами Активы приложения и Raw ресурсы
  • Урок 8. Фрагменты и web
    Понятие фрагментов и их жизненный цикл Архитектура фрагментов в Android Классы Fragment и FragmentManager Взаимодействие фрагментов с Activity Использование фрагментов Работа с протоколом HTTP в Android Пример приложения web-клиента Подведение итогов

Android. Уровень 2. Профессиональная разработка приложений

  • Урок 1. База данных SQLite
    Введение в реляционные базы данных. Язык структурированных запросов SQL. База данных SQLite в Android. Пример приложения для работы с БД.
  • Урок 2. Интент-фильтры и контент-провайдеры
    Интенты (действия, категории, данные). Интент-фильтры. Контент-провайдеры. Пример приложения с контент-провайдером.
  • Урок 3. Позиционирование и карты
    Методы определения местоположения. Работа с картами Google Maps. Внедрение карт в приложение. Управление картой в приложении. Добавление точек на карту. Определение местоположения без карт.
  • Урок 4. Многопоточность в Android. Сервисы
    Понятие процесса и потока. Главный поток приложения. Thread и Runnable. Классы AsyncTask и Loader. Метод post(). Сервисы (службы) в Android.
  • Урок 5. Broadcast Receivers. Виджеты
    Понятие Broadcast Receiver. Примеры использования бродкастов. Виджеты начального экрана. Пример простого виджета.
  • Урок 6. Телефония, сенсоры, bluetooth
    Менеджер телефонии в Android. Отслеживание входящих вызовов. Сенсоры устройства. Bluetooth.
  • Урок 7. Компоненты UI. Графика. Анимация
    Создание компонентов UI. Жизненный цикл компонента UI. Графика в Android. Анимация.
  • Урок 8. Отладка приложений
    Отладка Android приложений. Точки останова и пошаговое выполнение. Интерфейс ADB shell. DDMS, Traceview, LogCat

Два месяца обучения и практической работы c языком Java
Месяц обучения и практической работы с Android
Два месяца обучения и практической работы по продвинутому уровню Android

Andro >Android-разработка — Базовый курс

Курс идеально подойдет тем, кто решил начать путь разработчика мобильных приложений, в частности приложений под Android. Практика курса поможет вам увидеть максимально близко реальный кейс разработки мобильного приложения, и этого опыта вам должно хватить для устройства на работу младшим андроид-разработчиком.

Курс включает в себя:

  • Основы Java
  • Работа с Android SDK
  • Работа с REST API
  • Использование Material Design для стилизация мобильных приложений
  • Работа с Android Studio
  • Основы работы с Gradle
  • Работа с Android Debug Bridge
  • GIt и Github для контроля версий вашего кода

Пройдя курс «Android-разработка — Базовый курс» вы научитесь:

  • Создавать Android-приложения современным путем, используя лучшие инструменты и соблюдая советы Google.
  • У вас своя идея? Пройдя курс, вы сможете ее реализовать с помощью тех знаний. которые вы тут получите.
  • Использовать инструменты Android SDK а также другие сторонние решения для постройки приложений.
  • Создавать свои виджеты.
  • Создавать клиент-серверные приложения.
  • Работать с API социальных сетей, Google plus, Facebook и других.

!Примечание: Формат видео .webm — работает в Google Chrome!

50 лучших ресурсов для Andro >

Я до сих пор помню тот день (хотя прошло уже несколько лет), когда я приступил к разработке под Android, и вошел в огромный неизвестный мне мир, почти не представляя, с чего мне начать и что делать дальше.
Поиск в Google, приводящий к разным разрозненным статьям и чтение ответов на StackOverflow были тогда единственными способами, позволяющими мне собрать знания об Android. В то время мне было трудно найти качественные учебные материалы, чтобы двигаться вперед. Но, со временем, я нашел в сети места, где я мог бы найти полезные ссылки для сбора знаний и улучшения моих навыков.
В этой статье я собрал много ссылок, которые могут оказаться очень полезными почти для всех разработчиков Android, неважно новичок вы или опытный разработчик. Это попытка сделать ваш путь к знаниям более легким и помочь вам получить доступ к нужным ресурсам для освоения разработки Android.

Для начинающих

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

Android Development for Beginners
Простой и понятный для новичков курс, разработанный Google, чтобы быстро изучить основы и фундаментальные концепции разработки под Android.

Android Development with Android Studio
Простое, легкое и полное руководство для всех начинающих разработчиков Android-приложений, желающих разработать свое первое приложение для Android.

Android Development CodeLabs
Это один из лучших, но недооцененных ресурсов, которые я рекомендую посетить всем разработчики Android с самого начала своего пути развития.

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

Official Android Training Guides
Официальное руководство для разработчиков под Android от Google, которое может оказаться чрезвычайно полезным для любого начинающего разработчика. Обучение охватывает все основные моменты с большим количеством примеров кода, которые вам обязательно понадобятся.

What 2 Years of Android Development Have Taught Me the Hard Way
Очень проницательная и находчивая статья для всех начинающих разработчиков, которые только начинают свой путь в создании приложений для Android. Лучше всего учиться на чужих ошибках, чтобы никогда не повторять их сами.

XML Basics
Не знакомы с XML? Тогда самое время изучить его, потому что вам нужно будет использовать его для дизайна макетов при создании приложений для Android. Это очень легко и не займет у вас много времени.

A Beginner’s Guide to HTTP and REST
Если ваше приложение для Android должно общаться с интернет-сервисами и вызывать их API, то для вас очень важно хорошо понимать что такое HTTP и REST.

Для опытных разработчиков

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

Developing Android Apps
Хорошо продуманный курс от Google, который идеально подходит для любого разработчика Android среднего уровня, чтобы еще больше развить навыки создания приложений.

Common Design Patterns for Android
Если вы уже некоторое время занимаетесь разработкой под Android и изо всех сил пытаетесь найти элегантные способы решения проблем, возникающих при проектировании программного обеспечения, то этот ресурс содержит описание наиболее распространенных шаблонов проектирования, которые могут вам помочь.

How to Master Android: What Developers Can Learn from 21 Apps
Android имеет очень богатый набор приложений с открытым исходным кодом. Но как узнать, какие из них лучше всего подойдут чтобы вы могли углубить свои знания и улучшить навыки разработки? Не волнуйтесь, эта статья поможет вам найти их.

MVC vs. MVP vs. MVVM on Android
Эта статья описывает лучшие подходы к созданию архитектуры сложных приложений для Android. Она позволит вам улучшить процесс разработки, тестирования, отладки и поддержки приложений.

Modern Android: Ditching Activities and Fragments
Все мы знаем, насколько сложным и запутанным может быть жизненный цикл для Activity и Fragments в Android. Однако, существуют «более современные» способы создания приложений под Android, и эта статья поможет вам получить представление о них

RxAndroid Tutorial
Войдите в мир создания reactive-приложений для Android с помощью этого простого и полезного учебника, который поможет вам быстро разобраться с основными моментами.

A Deep Dive into Android View Constructors
Получите подробное представление о конструкторах View в приложениям для Android, о том, как они работают, и о том, как вы можете наиболее эффективно использовать их при разработке собственных View.

Understanding Android Core: Looper, Handler, and HandlerThread
Если вы хотите понять, как построен асинхронный мир среды исполнения Android и как использовать его для создания быстрых и высококачественных приложений, вам просто необходимо прочесть эту статью.

Measure, Layout, Draw, Repeat: Custom Views and ViewGroups
Углубленное руководство, рассказывающее о том, как View и ViewGroup работают в Android. Оно позволить вам разобраться, как разрабатывать свои собственные компоненты пользовательского интерфейса.

Understand Android Activity’s Launch Modes
Немногие разработчики понимают, как на самом деле работают различные модели запуска Activity в Android, и как вы можете использовать их для создания идеальной навигации в своем приложении.

How to Distribute Your Own Android library
Вы уже давно используете библиотеки в своих приложениях для Android и хотите внести свой вклад в сообщество. В этой статье вы найдет полное и подробное руководство по публикации вашей собственной библиотеки.

The Essential Google Play Store App Pre-Release Checklist
Узнайте, как сделать запуск вашего приложения Android в Play Store быстрым и успешным.

Android Architecture Blueprints
Этот репозиторий на Github может стать жемчужиной для тех, кто хочет узнать о различных инструментах и шаблонах для разработки приложений под Android, чтобы ваше приложение выглядело привлекательно и профессионально.

How to Deploy Android Instant Apps: Web Apps Take on Native Apps
Если вы хотите разобраться в отличиях разработки web-приложений и native-приложений для Android чтобы создавать легко распространяемые и быстро загружающиеся приложения, то вы просто не можете позволить себе пропустить эту статью.

The Best Productivity Tools for Android Developers
Вы уже довольно давно разрабатываете приложения для Android и хотите улучшить рабочий процесс и повысить продуктивность разработки? В этой статье собраны все инструменты, которые позволят вам достичь поставленные цели.

Use Android Studio Like a Pro
Вы используете Android Studio почти каждый день для разработки приложения, но хотите освоить это инструмент на 110%? Вам обязательно стоит прочесть эту статью!

Лучшие подходы к разработке приложения для Android

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

Android Development Best Practices
Легкая и полезная статья, объясняющая основные аспекты лучших практик при разработке под Android.

Android strings.xml — Things to Remember
В этой статье рассказывается о лучших методах правильного использования файла ресурсов strings.xml для достижения максимальной эффективности.

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

Best Practices for Android for Work in the Enterprise
Хотите начать использовать Android в своей компании? Тогда эта статья поможет вам узнать, как наилучшим образом приступить к использованию Android в бизнес-процессах вашей компании.

Android Development — Some of the Best Practices
Небольшой и чрезвычайно полезный список лучших практик разработки под Android, чтобы ваши приложения для Android всегда выглядели профессионально.

Effective Java for Android (Cheatsheet)
Effective Java (от Joshua Block) считается одной из лучших книг для написания обучения написанию высококачественного поддерживаемого Java-кода. В этой статье основное внимание уделяется тому, как вы можете наилучшим образом использовать описанные им методы и принципы специально для разработки Android.

Top 7 Tips for RxJava on Android
Если вы создаете reactive-приложений для Android, тогда эти советы помогут вам избежать многих распространенных ошибок и извлечь из этого максимум пользы.

Hiding Secrets in Android Apps
Подробная статья о некоторых общих приемах хранения секретов (паролей, ключей API и другой чувствительной информации) в приложениях Android, а также плюсы и минусы разных подходов к хранению такой информации.

Создание красивых приложений

Приложение всегда выглядит неполным без хорошего пользовательского интерфейса. Чистый и красивый интерфейс — вот то, что делает ваше приложение привлекательным, придает ему wow-фактор и выделяет его из остальных.

Material Design: An In-Depth Look
Очень хорошо написанная статья, дающая вам глубокое понимание мира Material Design для Android.

Animate All The Things. Transitions in Android
Узнайте, как вы можете создавать красивые анимации в своем приложении для Android, чтобы поразить своих пользователей и выделить ваше приложение из массы других.

Building Interfaces with ConstraintLayout
Недавно появившийся ConstraintLayout полностью меняет игру, когда дело доходит до разработки макетов для ваших Android-приложений. Эта статья поможет вам понять основы ConstraintLayout и начать его использовать в ваших приложениях.

Eight Don’ts For Your Material Design App
Создавайте лучшие и более качественные приложения, не допуская описанных в этой статье распространенных ошибок при использовании Material Design в своем приложении для Android.

Material Design is Design Science
Очень проницательная статья открывает вам научный взгляд на Material Design и его использование при разработке своего приложения.

Небольшой бонус

Некоторые интересные бонусные ресурсы, которые вы просто не захотите пропустить.

40 Leading Android Developers to Follow on Twitter
Если вы хотите быть курсе последних событий в мире Android, обязательно подпишитесь на обновления в Twitter от экспертов-разработчиков Android.

Get Started with Android Things Today!
Хотите погрузиться в мир IoT с помощью инструментов и средств разработки Android? Вот хороший ресурс для вас, чтобы начать свое путешествие.

Android Wear Tutorial — A Comprehensive Introduction
Если вы интересуетесь разработкой приложений для носимых Android-устройств (Android wearables), то рекомендуем ознакомиться с лучшим, для начинающих, учебником.

Android Resources and Attributes Cheatsheet
Очень интересная статья о малоизвестных деталях ресурсов и атрибутов Android, о которых вы, возможно, еще не знаете.

An Introduction to Android TV
Хотите разработать приложения для телевизоров с большим экраном или модифицировать уже разработанные приложения для поддержки этой новой платформы? Здесь вы найдете краткое введение, чтобы начать работу.

Полезные сайты

Хотите быть в курсе последних новостей о новостях, иметь доступ к учебным пособиям и отслеживать все важные событиях в мире Android? Вот некоторые из лучших сайтов, которые вам стоит посетить.

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

Fragmented Podcast
Если вам нравится слушать подкасты, то вы, конечно же, не захотите этот выходящий раз в две недели подкаст с обсуждением различных инструментов, шаблонов и лучших практик разработки под Android.

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

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

Styling Android
На этом сайте вы найдете всю необходимую информацию, для разработки UI и UX вашего приложения.

The Commons Blog
Марк Мерфи (Mark Murphy), известный по авторству известной книги «Busy Coder’s Guide to Android Development», рассказывает о некоторых интересных вещах о развитии Android в своем личном блоге.

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

Android Developers Community on Reddit
Очень активное сообщество разработчиков Android со всего мира, которые обсуждают и обмениваются информацией по различным темам, связанным с разработкой под Android.

Official Android Developers Blog
Это официальный блог, через который Google напрямую взаимодействует с разработчиками Android. Все последние новости и анонсы, связанные с развитием, появляются здесь раньше чем где-либо еще.

Надеюсь, что эти ресурсы помогут вам узнать больше о разработке Android и создавать более качественные приложения. Если вы сочли этот материал полезным, поделитесь им с друзьями и вашими коллегами-разработчиками. Эта статья была первоначально опубликована TechBeacon.

Основы создания приложений

Приложения для Android пишутся на языке программирования Java. Инструменты Android SDK (Software Development Kit – комплект разработки программного обеспечения) компилируют написанный вами код — и все требуемые файлы данных и ресурсов — в файл APK – программный пакет Android, который представляет собой файл архива с расширением .apk . В файле APK находится все, что требуется для работы Android-приложения, и он позволяет установить приложение на любом устройстве под управлением системы Android.

Каждое приложение Android, установленное на устройстве, работает в собственной «песочнице» (изолированной программной среде):

  • операционная система Android представляет собой многопользовательскую систему Linux, в которой каждое приложение является отдельным пользователем;
  • по умолчанию система назначает каждому приложению уникальный идентификатор пользователя Linux (этот идентификатор используется только системой и неизвестен приложению); система устанавливает полномочия для всех файлов в приложении, с тем чтобы доступ к ним был разрешен только пользователю с идентификатором, назначенным этому приложению;
  • у каждого процесса имеется собственная виртуальная машина (ВМ), так что код приложения выполняется изолированно от других приложений;
  • по умолчанию каждое приложение выполняется в собственном процессе Linux. Android запускает процесс, когда требуется выполнить какой-либо компонент приложения, а затем завершает процесс, когда он больше не нужен либо когда системе требуется освободить память для других приложений.

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

Однако у приложения есть варианты предоставления своих данных другим приложениям и доступа к системным службам:

  • двум приложениям можно назначить один идентификатор пользователя Linux. В этом случае каждый из них сможет обращаться к файлам другого приложения. Для экономии ресурсов системы также можно сделать так, чтобы приложения с одинаковым идентификатором пользователя выполнялись в одном процессе Linux и использовали одну ВМ ( приложения также должны быть подписаны одним сертификатом);
  • приложение может запросить разрешение на доступ к данным устройства, например к контактам пользователя, SMS-сообщениям, подключаемой карте памяти (SD-карте), камере, Bluetooth и др. Все разрешения должны предоставляться приложению при его установке.

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

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

Компоненты приложения

Компоненты приложения являются кирпичиками, из которых состоит приложение для Android. Каждый компонент представляет собой отдельную точку, через которую система может войти в приложение. Не все компоненты являются точками входа для пользователя, а некоторые из них зависят друг от друга. При этом каждый компонент является самостоятельной структурной единицей и играет определенную роль — каждый из них представляет собой уникальный элемент структуры, который определяет работу приложения в целом.

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

Четыре типа компонентов:

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

Операция относится к подклассу класса Activity . Подробные сведения об этом можно найти в руководстве для разработчиков в статье Операции .

Службы Служба (Service) представляет собой компонент, который работает в фоновом режиме и выполняет длительные операции, связанные с работой удаленных процессов. Служба не имеет пользовательского интерфейса. Например, она может воспроизводить музыку в фоновом режиме, пока пользователь работает в другом приложении, или же она может получать данные по сети, не блокируя взаимодействие пользователя с операцией. Служба может быть запущена другим компонентом, который затем будут взаимодействовать с ней, – например операцией.

Служба относится к подклассу класса Service . Подробные сведения об этом можно найти в руководстве для разработчиков в статье Службы .

Поставщики контента Поставщик контента (Content provider) управляет общим набором данных приложения. Данные можно хранить в файловой системе, базе данных SQLite, в Интернете или любом другом постоянном месте хранения, к которому у вашего приложения имеется доступ. Посредством поставщика контента другие приложения могут запрашивать или даже изменять данные (если поставщик контента позволяет делать это). Например, в системе Android есть поставщик контента, который управляет информацией контактов пользователя. Любое приложение, получившее соответствующие разрешения, может запросить часть этого поставщика контента (например ContactsContract.Data ), для чтения и записи сведений об определенном человеке.

Поставщики контента также используются для чтения и записи данных, доступ к которым внешним компонентам приложение не предоставляет. Например, в образце приложения Note Pad с помощью поставщика контента выполняется сохранение заметок.

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

Приемники широковещательных сообщений Приемник широковещательных сообщений (Broadcast receiver) представляет собой компонент, который реагирует на объявления распространяемые по всей системе. Многие из этих объявлений рассылает система — например объявление о том, что экран выключился, аккумулятор разряжен или был сделан фотоснимок. Объявления также могут рассылаться приложениями, — например, чтобы сообщить другим приложениям о том, что какие-то данные были загружены на устройство и теперь готовы для использования. Несмотря на то что приемники широковещательных сообщений не имеют пользовательского интерфейса, они могутсоздавать уведомления в строке состояния, чтобы предупредить пользователя о событии «рассылка объявления». Однако чаще всего они являются просто «шлюзом» для других компонентов и предназначены для выполнения минимального объема работы. Например , они могут инициировать выполнение службой определенных действий при возникновении события.

Приемник широковещательных сообщений относится к подклассу класса BroadcastReceiver , а каждое такое сообщение предоставляется как объект Intent . Подробные сведения изложены в руководстве, посвященном классу BroadcastReceiver .

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

Когда система запускает компонент, она запускает процесс для этого приложения (если он еще не был запущен) и создает экземпляры классов, которые требуются этому компоненту. Например, если ваше приложение запустит операцию фотографирования в приложении для камеры, эта операция будет выполняться в процессе, который относится к этому стороннему приложению, а не в процессе вашего приложения. Поэтому, в отличие от приложений для большинства других систем, в приложениях для Android отсутствует единая точка входа (например, в них нет функции main() ).

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

Активация компонентов

Компоненты трех из четырех возможных типов — операции, службы и приемники широковещательных сообщений — активируются асинхронным сообщением, которое называется Intent (намерение). Объекты Intent связывают друг с другом отдельные компоненты во время выполнения, будь то это компоненты вашего или стороннего приложения (эти объекты Intent можно представить себе в виде мессенджеров, которые посылают другим компонентам запрос на выполнение действий).

Объект Intent создается с помощью объекта Intent , который описывает запрос на активацию либо конкретного компонента, либо компонента конкретного типа — соответственно, намерение Intent может быть явным или неявным.

Для операций и служб Объект Intent определяет действие, которое требуется выполнить (например, просмотреть (view) или отправить (send) что-то), а также может указывать URI (Uniform Resource Identifier – унифицированный идентификатор ресурса) данных, с которыми это действие нужно выполнить (помимо прочих сведений, которые нужно знать запускаемому компоненту). Например, объект Intent может передавать запрос на выполнение операции «показать изображение» или «открыть веб-страницу». В некоторых ситуациях операцию можно запустить, чтобы получить результат. В этом случае операция возвращает результат также в виде объекта Intent (например, можно отправить сообщение Intent, чтобы дать пользователю возможность выбрать контакт и вернуть его вам — в ответном сообщении Intent будет содержаться URI, указывающий на выбранный контакт).

Для приемников широковещательных сообщений Intent просто определяет передаваемое объявление (например, широковещательное сообщение о низком уровне заряда аккумулятора содержит только строку «аккумулятор разряжен»).

Компоненты четвертого типа – поставщики контента – сообщениями Intent не активируются. Они активируются по запросу от ContentResolver . Процедура определения контента (content resolver) обрабатывает все прямые транзакции с поставщиком контента, с тем чтобы этого не пришлось делать компоненту, который выполняет транзакции с поставщиком. Вместо этого он вызывает методы для объекта ContentResolver . Это формирует слой, абстрагирующий (в целях безопасности) поставщика контента от компонента, запрашивающего информацию.

Для активации компонентов каждого типа имеются отдельные методы:

  • Можно запустить операцию (или определить для нее какое-то новое действие), передав объект Intent методу startActivity() или startActivityForResult() (если требуется, чтобы операция вернула результат).
  • Можно запустить службу (либо выдать работающей службе новые инструкции), передав объект Intent методу startService() . Либо можно установить привязку к службе, передав объект Intent методу bindService() .
  • Можно инициировать рассылку сообщений, передав объект Intent таким методам, как sendBroadcast() , sendOrderedBroadcast() и sendStickyBroadcast() .
  • Можно выполнить запрос к поставщику контента, вызвав метод query() для объекта ContentResolver .

Подробные сведения об использовании объектов Intent приведены в документе Объекты Intent и фильтры объектов Intent. Более подробная информация об активации определенных компонентов также приведена в следующих документах: Операции, Службы, BroadcastReceiver и Поставщики контента.

Файл манифеста

Для запуска компонента приложения системе Android необходимо знать, что компонент существует. Для этого она читает файл AndroidManifest.xml приложения (файл манифеста). В этом файле, который должен находиться в корневой папке приложения, должны быть объявлены все компоненты приложения.

Помимо объявления компонентов приложения, манифест служит и для других целей, среди которых:

  • указание всех полномочий пользователя, которые требуются приложению, например разрешения на доступ в Интернет или на чтение контактов пользователя;
  • объявление минимальногоуровня API, требуемого приложению, с учетом того, какие API-интерфейсы оно использует;
  • объявление аппаратных и программных функций, которые нужны приложению или используются им, например камеры, службы Bluetooth или сенсорного экрана;
  • указание библиотек API, с которыми необходимо связать приложение (отличные от API-интерфейсов платформы Android), например библиотеки Google Maps ;
  • и многое другое.

Объявление компонентов

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

Атрибут android:name в элементе указывает полное имя класса подкласса Activity , а атрибут android:label указывает строку, которую необходимо использовать в качестве метки операции, отображаемой для пользователя.

Все компоненты приложения необходимо объявлять следующим образом:

для поставщиков контента

Системе не видны операции, службы и поставщики контента, которые имеются в исходном коде, но не объявлены в манифесте, поэтому они не могут быть запущены. А вот приемники широковещательных сообщений можно либо объявить в манифесте, либо создать динамически в коде (как объекты BroadcastReceiver ) и зарегистрировать в системе путем вызова registerReceiver() .

Подробные сведения о структуризации файла манифеста для приложения см. в документе Файл AndroidManifest.xml .

Объявление возможностей компонентов

Как уже говорилось в разделе Активация компонентов, с помощью объекта Intent можно запускать операции, службы и приемники широковещательных сообщений. Для этого в объекте Intent следует явно указать имя целевого компонента (с помощью имени класса компонента). Однако в полной мере возможности объектов Intent раскрываются при использовании концепции неявных Intent. В неявном сообщении Intent просто описывается тип действия, которое требуется выполнить (а также, хотя это и не обязательно, данные, в отношении которых вы бы хотели выполнить это действие). Системе же предоставляется возможности найти на устройстве компонент, который может выполнить это действие, и запустить его. При наличии нескольких компонентов, которые могут выполнить действие, описанное в сообщении Intent, пользователь выбирает, какой из них будет использоваться.

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

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

Например, если вы создали приложение для работы с электронной почтой с операцией составления нового сообщения, вы можете объявить фильтр для ответа на сообщения Intent типа «send» (для отправки нового сообщения электронной почты) следующим образом:

Затем, если другое приложение создаст объект Intent с действием ACTION_SEND и передаст его в startActivity() , система сможет запустить вашу операцию, дав пользователю возможность написать и отправить сообщение электронной почты.

Подробные сведения о создании фильтров объектов Intent приведены в документе Объекты Intent и фильтры объектов Intent.

Объявление требований приложения

Существует огромное количество устройств, работающих под управлением Android, и не все они имеют одинаковые функциональные возможности. Чтобы ваше приложение не могло быть установлено на устройствах, в которых отсутствуют функции, необходимые приложению, важно четко определить профиль для типов устройств, поддерживаемых вашим приложением, указав требования к аппаратному и программному обеспечению в файле манифеста. Эти объявления по большей части носят информационный характер, система их не читает. Однако их читают внешние службы, например Google Play, с целью обеспечения фильтрации для пользователей, которые ищут приложения для своих устройств.

Например, если вашему приложению требуется камера и оно использует API-интерфейсы из Android 2.1 (уровень API 7), эти параметры следует объявить в файле манифеста в качестве требований следующим образом:

Теперь ваше приложение нельзя будет установить из Google Play на устройствах, в которых нет камеры, а также на устройствах, работающих под управлением Android версии ниже 2.1.

Однако можно также объявить, что приложение использует камеру, но для его работы она не является непременно необходимой. В этом случае в приложении атрибуту required необходимо задать значение «false» , а во время работы оно должно проверять, имеется ли на устройстве камера, и при необходимости отключать свои функции, которые используют камеру.

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

Ресурсы приложения

Приложение Android состоит не только из кода — ему необходимы такие существующие отдельно от исходного кода ресурсы, как изображения, аудиофайлы и все, что связано с визуальным представлением приложения. Например, необходимо определять анимацию, меню, стили, цвета и макет пользовательских интерфейсов операций в файлах XML. Используя ресурсы приложения, можно без труда изменять его различные характеристики, не меняя код, а, кроме того, —путем предоставления наборов альтернативных ресурсов — можно оптимизировать свое приложение для работы с различными конфигурациями устройств (например, для различных языков или размеров экрана).

Для каждого ресурса, включаемого в проект Android, инструменты SDK задают уникальный целочисленный идентификатор, который может использоваться, чтобы сослаться на ресурс из кода приложения или из других ресурсов, определенных в XML. Например, если в вашем приложении имеется файл изображения с именем logo.png (сохраненный в папке res/drawable/ ), инструменты SDK сформируют идентификатор ресурса под именем R.drawable.logo , с помощью которого на изображение можно будет ссылаться и вставлять его в пользовательский интерфейс.

Один из наиболее важных аспектов предоставления ресурсов отдельно от исходного кода заключается в возможности использовать альтернативные ресурсы для различных конфигураций устройств. Например, определив строки пользовательского интерфейса в XML, вы сможете перевести их на другие языки и сохранить эти переводы в отдельных файлах. Затем по квалификатору языка , добавленному к имени каталога ресурса (скажем res/values-fr/ для строк на французском языке), и выбранному пользователем языку система Android применит к вашему пользовательскому интерфейсу строки на соответствующем языке.

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

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

Также читайте:

Возможно, вас также заинтересует:

Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.

Andro >Android-разработка — Базовый курс

Курс идеально подойдет тем, кто решил начать путь разработчика мобильных приложений, в частности приложений под Android. Практика курса поможет вам увидеть максимально близко реальный кейс разработки мобильного приложения, и этого опыта вам должно хватить для устройства на работу младшим андроид-разработчиком.

Курс включает в себя:

  • Основы Java
  • Работа с Android SDK
  • Работа с REST API
  • Использование Material Design для стилизация мобильных приложений
  • Работа с Android Studio
  • Основы работы с Gradle
  • Работа с Android Debug Bridge
  • GIt и Github для контроля версий вашего кода

Пройдя курс «Android-разработка — Базовый курс» вы научитесь:

  • Создавать Android-приложения современным путем, используя лучшие инструменты и соблюдая советы Google.
  • У вас своя идея? Пройдя курс, вы сможете ее реализовать с помощью тех знаний. которые вы тут получите.
  • Использовать инструменты Android SDK а также другие сторонние решения для постройки приложений.
  • Создавать свои виджеты.
  • Создавать клиент-серверные приложения.
  • Работать с API социальных сетей, Google plus, Facebook и других.

!Примечание: Формат видео .webm — работает в Google Chrome!

Разработка Andro >

Android-разработчики очень востребованы на рынке труда, поскольку устройства на этой платформе ежемесячно используют 2 миллиарда пользователей. Применяется мобильная операционная система Android в смартфонах, планшетах, нетбуках, часах, электронных книгах и так далее. Кроме этого, специалисты, которые умеют с ней работать, всегда могут использовать возможности Google Play для продвижения собственных идей. Средняя зарплата Android-разработчиков в Беларуси – 2400 долларов.

Описание курса

Описание курса

Формы обучения

Выходного дня

Условия отбора

Зачисление на курс проводится на конкурсной основе по результатам тестирования или собеседования с тренером.

Выпускники курса «Программирование на Java» с баллом 7 и выше зачисляются вне конкурса.

Необходимая подготовка

Уверенное владение Java Core или Kotlin – у вас должен быть опыт написания минимум одного приложения на этих языках (или хотя бы своего тестового проекта).

Знающим другие языки нужно обязательно пройти бесплатный онлайн курс по основам Java. Либо наш базовый курс по Java-программированию.

Понимание, что такое многопоточность, ООП, коллекции, синтаксис Java или Kotlin.

Для чего этот курс

Научиться писать приложения под Android на уровне, которого будет достаточно для прохождения собеседования в IT-компании.

Создать своё приложение и выложить его в Google Play.

Вы будете уметь

Писать приложения под Android на языках Java и Kotlin

Программа курса

Преподаватели курса

Опыт работы: более 7 лет

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

Другие курсы программы Разработка мобильных приложений на Android

Тимофей Коваленко

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

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

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

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

Введение в разработку мобильных приложений

1.2 Устройство платформы Andro >Платформа Android объединяет операционную систему, построенную на основе ядра ОС Linux, промежуточное программное обеспечение и встроенные мобильные приложения. Разработка и развитие мобильной платформы Android выполняется в рамках проекта AOSP (Android Open Source Project) под управлением OHA (Open Handset Alliance), руководит всем процессом поисковый гигант Google.

Android поддерживает фоновое выполнение задач; предоставляет богатую библиотеку элементов пользовательского интерфейса; поддерживает 2D и 3D графику, используя OpenGL стандарт; поддерживает доступ к файловой системе и встроенной базе данных SQLite.

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

  • Базовый уровень (Linux Kernel) — уровень абстракции между аппаратным уровнем и программным стеком;
  • Набор библиотек и среда исполнения (Libraries & Andro >

Наглядное изображение архитектуры на рисунке 1.1.

Рассмотрим компоненты платформы более подробно.

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

Уровнем выше располагается набор библиотек и среда исполнения. Библиотеки реализуют следующие функции:

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

Библиотеки реализованы на С/С++ и скомпилированы под конкретное аппаратное обеспечение устройства, вместе с которым они и поставляются производителем в предустановленном виде.

Рассмотрим некоторые библиотеки:

Surface Manager — композитный менеджер окон. Поступающие команды отрисовки собираются в закадровый буфер, где они накапливаются, составляя некую композицию, а потом выводятся на экран. Это позволяет системе создавать интересные бесшовные эффекты, прозрачность окон и плавные переходы.
Media Framework — библиотеки, реализованные на базе PacketVideo OpenCORE. Используются для записи и воспроизведения аудио и видео контента, а также для вывода статических изображений. Поддерживаются форматы: MPEG4, H.264, MP3, AAC, AMR, JPG и PNG.
SQLite — легковесная и производительная реляционная СУБД, используется в Android в качестве основного движка для работы с базами данных.
3D библиотеки — используются для высокооптимизированной отрисовки 3D-графики, при возможности используют аппаратное ускорение. Библиотеки реализованы на основе API OpenGL|ES. OpenGL|ES (OpenGL for Embedded Systems) — подмножество графического программного интерфейса OpenGL, адаптированное для работы на встраиваемых системах.
FreeType — библиотека для работы с битовыми картами, для растеризации шрифтов и осуществления операций над ними.
LibWebCore — библиотеки браузерного движка WebKit, используемого также в известных браузерах Google Chrome и Apple Safari.
SGL (Skia Graphics Engine) — открытый движок для работы с 2D-графикой. Графическая библиотека является продуктом Google и часто используется в других программах.
SSL — библиотеки для поддержки одноименного криптографического протокола.
Libc — стандартная библиотека языка С, а именно ее BSD реализация, настроенная для работы на устройствах на базе Linux.

Среда исполнения включает в себя библиотеки ядра, обеспечивающие большую часть низкоуровневой функциональности, доступной библиотекам ядра языка Java, и виртуальную машину Dalvik, позволяющую запускать приложения. Каждое приложение запускается в своем экземпляре виртуальной машины, тем самым обеспечивается изоляция работающих приложений от ОС и друг от друга. Для исполнения на виртуальной машине Dalvik Java-классы компилируются в исполняемые файлы с расширением .dex с помощью инструмента dx, входящего в состав Android SDK. DEX (Dalvik EXecutable) — формат исполняемых файлов для виртуальной машины Dalvik, оптимизированный для использования минимального объема памяти. При использовании IDE Eclipse и плагина ADT (Android Development Tools) компиляция классов Java в формат .dex происходит автоматически.

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

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

  • богатый и расширяемый набор представлений (Views), который может быть использован для создания визуальных компонентов приложений, например, списков, текстовых полей, таблиц, кнопок или даже встроенного web-браузера;
  • контент-провайдеры (Content Prov >

Application Framework предоставляет в распоряжение приложений в ОС Android вспомогательный функционал, благодаря чему реализуется принцип многократного использования компонентов приложений и ОС. Естественно, в рамках политики безопасности.

И, наконец, самый высокий, самый близкий к пользователю уровень приложений. Именно на этом уровне пользователь взаимодействует со своим устройством, управляемым ОС Android. Здесь представлен набор базовых приложений, который предустановлен на ОС Android. Например, браузер, почтовый клиент, программа для отправки SMS, карты, календарь, менеджер контактов и др. Список интегрированных приложений может меняться в зависимости от модели устройства и версии Android. К этому уровню также относятся все пользовательские приложения.

Разработчик обычно взаимодействует с двумя верхними уровнями архитектуры Android для создания новых приложений. Библиотеки, система исполнения и ядро Linux скрыты за каркасом приложений.

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

Для пополнения коллекции приложений своего мобильного устройства пользователь может воспользоваться приложением Google Play, которое позволяет покупать и устанавливать приложения с сервиса Google Play. Разработчики, в свою очередь, могут выкладывать свои приложения в этот сервис, Google Play отслеживает появление обновлений приложения, сообщает пользователям этого приложения об обновлении и предлагает установить его. Также Google Play предоставляет разработчикам доступ к услугам и библиотекам, например, доступ к использованию и отображению Google Maps.

Для установки приложения на устройствах с ОС Android создается файл с расширением *.apk (Android package), который содержит исполняемые файлы, а также вспомогательные компоненты, например, файлы с данными и файлы ресурсов. После установки на устройство каждое приложение «живет» в своем собственном изолированном экземпляре виртуальной машины Dalvik.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих