Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 10.04.2014 | Доступ: свободный | Студентов: 6840 / 1237 | Длительность: 14:18:00
Специальности: Программист
Лекция 1:

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

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

Скриншоты приложений взяты из магазина приложений Google Play или сделаны самостоятельно с использованием смартфона Мегафон SP-A20i Mint на платформе Intel Medfield.

Презентацию к данной лекции можно скачать здесь.

1.1 Введение

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

Таблица 1.1. Мировые продажи смартфонов конечным пользователям, распределение по ОС
Операционная система Продано (тыс.ед.) III кв. 2013 Доля рынка (%) III кв. 2013 Продано (тыс.ед.) III кв. 2012 Доля рынка (%) III кв. 2012
Android 205022,7 81,9 124552,3 72,6
iOS 30330,0 12,1 24620,3 14,3
Microsoft 8912,3 3,6 3993,6 2,3
BlackBerry 4400,7 1,8 8946,8 5,2
Bada 633,3 0,3 4454,7 2,6
Symbian 457,5 0,2 4401,3 2,6
другие 475,2 0,2 683,7 0,4
Общее кол-во: 250231,7 100,0 171652,7 100,0
Источник: Gartner (ноябрь 2013)

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

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

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

Немного истории

Рассмотрим, как все начиналось. В 2003 году в Пало Альто, штат Калифорния Энди Рубин с единомышленниками (Рич Майнер, Ник Сирс и Крис Уайт) основали компанию Android Inc. Поначалу в компании занимались проектированием мобильных гаджетов, которые на основе геолокационных данных автоматически подстраивались под нужды пользователей.

В августе 2005 года Android Inc. стала дочерней компанией Google. Энди Рубин, Рич Майнер и Крис Уайт остались в Android Inc. и начали работать над операционной системой, базирующейся на ядре Linux. В Google задумали реализовать мощнейшую платформу, пригодную к использованию на тысячах различных моделей телефонов. В связи с этим был создан Open Handset Alliance (OHA) - консорциум, состоящий из более 80 компаний, направляющий свои усилия на разработку открытых стандартов для мобильных устройств. В состав OHA входят такие гиганты, как Google (организатор и идейный вдохновитель), HTC, Sony, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung Electronics, LG Electronics, T-Mobile, Sprint Corporation, NVIDIA и многие другие.

Первая версия Android была представлена 23 сентября 2008 года, версии было дано название Apple Pie (можно заметить созвучие с прямым конкурентом). Далее так повелось, что название каждой очередной версии представляет какой-либо десерт, при этом первые буквы наименований в порядке версий соответствуют буквам латинского алфавита по порядку. С развитием обновлений Android можно познакомиться в таблице 1.2.

Таблица 1.2. История обновлений ОС Android
Версия, логотип, дата выхода Основные возможности

Android 1.0


Apple Pie

Первый стабильный релиз, основан на ядре Linux 2.6.25.
Поддерживается:
  • файловая система FAT32, стек интернет-протоколов TCP/IP;
  • протоколы передачи данных: 802.11 b/g Wi-Fi,Bluetooth 2.0 EDR, GPRS, EDGE, UMTS, HSDPA;
  • фото и видео съемка, однако недостаточно опций для настройки разрешения камеры, баланса белого и др.;
  • сенсорные дисплеи и landscape режим отображения данных на экране, максимальная цветность дисплея - 16 бит (тип HVGA);
  • виджеты и ярлыки на рабочем столе (Home Screen), сменные обои;
  • регулярные телефонные функции, контроль вызова, конференц-связь, легкая интеграция с контактами;
  • полноценный web-браузер на движке WebKit, HTML, XHTML;
  • e-mail клиент, протоколы POP3, IMAP4, SMTP;
  • медиа проигрыватель, позволяющий управлять, импортировать, проигрывать медиа контент в различных форматах.
Базовые приложения:
будильник; калькулятор; календарь; камера; контакты; сообщения (в том числе MMS); настройки; голосовой набор.
Минимальные системные требования для запуска и работы:
архитектура ARM, 128 MB RAM, 256 MB ROM.
Видео презентация:
http://www.youtube.com/watch?feature=player_embedded&v=1FJHYqE0RDg

Android 1.1


Banana Bread
февраль 2009
(API level: 2)
Нововведения:
Исправлены проблемы: с будильником; со спящим режимом; с вызовом дисплея набора номера; в IMAP ошибки запроса пароля и др.
Изменения API.
Добавлены подробности и отзывы к картам.
Добавлена поддержка вложений из MMS.
Локализации:
Английская US (en_US)
Немецкая (de)
Подробности:
http://developer.android.com/about/versions/android-1.1.html
Android 1.5
Cupcake

апрель 2009
(API level: 3)
Нововведения:
Поддержка экранной клавиатуры (портретный и книжный режимы); акселерометра; видеозапись и воспроизведение видео; приложение для работы с YouTube; стерео Bluetooth; функция копирования и вставки между приложениями (copy&paste).
Локализации:
добавились очень многие, в том числе и русская (ru_RU).
Система:
новое Linux ядро (версия 2.6.27); автоматическая проверка и восстановление файловой системы на SD card; новое приложение для просмотра СТК меню оператора (SIM Application Toolkit 1.0).
Изменения в пользовательском интерфейсе (UI):
изменено большинство UI-элементов, добавлены новые виджеты; определение режима (книжный или портретный) работы программы; анимированное переключение между окнами.
Подробности:
http://developer.android.com/about/versions/android-1.5.html

Android 1.6


Donut
сентябрь 2009
(API level: 4)
Нововведения:
Система:
новое ядро Linux (версия 2.6.29); поддержка сотового стандарта CDMA; поддержка разрешений дисплеев: QVGA и WVGA; обновленный медиа-движок OpenCore 2; движок синтеза речи (многоязыковой); Gesture Builder поддержка возможности (для разработчиков) создавать, сохранять, загружать и распознавать жесты, прикреплять к определенным действиям.
Пользовательские возможности:
строка быстрого поиска (прямо с рабочего стола): история и закладки в браузере, контакты и поиск в интернете; возможность подключаться к видам VPN: L2TP/IPSEC pre-shared key based VPN, L2TP/IPSEC certificate based VPN, L2TP only VPN, PPTP only VPN; ускорение работы камеры; индикатор работы батареи позволяет увидеть сколько энергии потребляют работающие программы и сервисы.
Обновленный Android Market.
Подробности:
http://developer.android.com/about/versions/android-1.6.html
Android 2.0,
2.0.1, 2.1

Eclair
октябрь 2009
(API level: 5)
(API level: 6)
(API level: 7)
Нововведения в 2.0:
поддержка работы нескольких почтовых аккаунтов одновременно, возможность использования совместных папок (входящие, исходящие) для всех аккаунтов; быстрый способ работы с контактами Quick Contact;
поиск по всем сохраненным SMS и MMS сообщениям, удаление старых после заданного срока;
возможности камеры: вспышка, цифровой зум, сценические режимы, баланс белого, цветовые эффекты, макрофокусировка;
улучшенное расположение виртуальных клавиш клавиатуры, поддержка комбинированных нажатий клавиш (технология мультитач), усовершенствованная функция автодополнения;
поддержка HTML5, версии Bluetooth 2.1, новых профилей OPP и PBAP.
Подробности:
http://developer.android.com/about/versions/android-2.0.html
Нововведения 2.0.1:
подрелиз версии 2.0, включающий в себя незначительные изменения в функционале и по большей части bugfix-ом версии 2.0.
Подробности:
http://developer.android.com/about/versions/android-2.0.1.html
Нововведения 2.1:
основным новшеством, представляющим интерес для конечного пользователя, стало добавление анимированных (живых) обоев, остальные изменения в Framework API, представляют интерес для разработчиков.
Подробности:
http://developer.android.com/about/versions/android-2.1.html

Android 2.2


Froyo
май 2010
(API level: 8)
Нововведения:
рост производительности примерно в 3-5 раз за счет использования Dalvik Virtual Machine Just-in-Time компилятора (Dalvik устарел, вместо него используется ART);
возможности установки приложений на SD-карту, переноса приложений из внутренней памяти на карту и обратно;
возможность использовать смартфон в качестве точки доступа к интернету, в качестве модема для других устройств;
поддержка Adobe Flash;
V8 javascript существенно повысил скорость работы штатного браузера.
Подробности:
http://developer.android.com/about/versions/android-2.2.html
Android 2.3,
2.3.3

Gingerbread
декабрь 2010
(API level: 9)
(API level: 10)
До весны 2013 года самая массовая версия на рынке.
Нововведения:
новое ядро Linux 2.6.35; поддержка открытых мультимедийных стандартов (VP8 и WebM), форматов ACC/AMR, звуковых эффектов и эквалайзера, фронтальной камеры (интеграция с VOIP(SIP));
обновленный GUI: уменьшение времени доступа к функциям, повышение общей энергоэффективности системы;
улучшение стандартной клавиатуры системы: поддержка словарей, технологии мультитач, упрощенное выделение и копирование текста;
поддержка технологии NFC; расширение возможностей работы с датчиками положения телефона.
Подробности:
http://developer.android.com/about/versions/android-2.3.html

Android 3.0-3.2


Honeycomb
февраль 2011
(API level: 11)
(API level: 12)
(API level: 13)
Специальная версия для работы на планшетах (MID, tablets).
Нововведения 3.0:
новое ядро Linux 2.6.36; поддержка файловой системы ext4, файловой системы FUSE для MTP устройств; поддержка режима USB-хост для работы с клавиатурой, мышью и USB-хабами; поддержка MTP/PTP;
виртуальная машина Dalvik: поддержка и оптимизация SMP, множество улучшений JIT, улучшенный сборщик мусора;
совершенно новый интерфейс с полноценной оптимизацией под устройства с большими экранами; поддержка виртуальных рабочих столов, каждый из которых может иметь свой набор виджетов и ярлыков;
улучшенные и переработанные базовые приложения: Browser, e-mail и др.
Подробности:
http://developer.android.com/about/versions/android-3.0.html
Нововведения 3.1:
поддержка работы кардридера;
усовершенствован GUI: доработан менеджер задач, позволяющий переключаться между множеством различных приложений (в 3.0 только 5 программ одновременно); возможность менять размер виджетов, как по горизонтали, так и по вертикали.
Подробности:
http://developer.android.com/about/versions/android-3.1.html
Нововведения 3.2:
расширен спектр поддерживаемых планшетов; возможность автоматического масштабирования приложений для отображения на более крупных экранах.
Подробности:
http://developer.android.com/about/versions/android-3.2.html
Android 4.0, 4.0.3
Ice Cream Sandwich

ноябрь 2011
(API level: 14)
(API level: 15)
Нововведения:
поддержка и смартфонов, и планшетов; поддержка новых процессорных архитектур, помимо ARM поддержка Intel x86 и MIPS;
возможность разблокировки экрана: при помощи функции определения лица; жестами: перетащить замочек из центра экрана на иконку приложения и оно запустится;
многозадачность: кнопка Recent Apps позволяет мгновенно переходить от одной задачи к другой с помощью списка в системной панели;
новые элементы управления передачей данных через сеть: в приложении Настройки можно увидеть общее использование данных по каждому типу сети, объем данных, используемых каждым работающим приложением;
доступность Android 4.0 для слепых и слабовидящих пользователей, браузер поддерживает экранного чтеца, который воспроизводит все видимое активное содержимое на экране;
AndroidBeam - удобное средство обмена между двумя NFC-устройствами;
Wi-Fi Direct и Bluetooth HDP, HFP: возможность прямого подключения к соответствующим устройствам.
Подробности:
http://developer.android.com/about/versions/android-4.0.html

Android 4.1-4.3


Jelly Bean
июль 2012
(API level: 16)
(API level: 17)
(API level: 18)
Нововведения 4.1:
увеличена скорость прорисовки интерфейса, улучшен поиск, добавлено несколько полезных сервисов;
улучшена работа со словарями, возможно использовать голосовой ввод без подключения к интернету;
специальные возможности: возможность управления смартфоном с помощью жестов и голосовых подсказок, подключения устройств ввода, поддерживающих шрифт Брайля;
существенно доработана функция передачи данных Beam; переработан поиск (вместо ссылок ответ на запрос); голосовой поиск; Google Now: нужная информация в нужное время.
Подробности:
http://developer.android.com/about/versions/android-4.1.html
Нововведения 4.2:
реализована поддержка нескольких пользователей (планшеты); поддержка wireless display: возможность трансляции видео и изображений на внешний экран; возможность отображения полезной информации в режиме сна, при подключении к док-станции или на зарядке; улучшена панель уведомлений.
Подробности:
http://android.com.ua/android_42.html
Нововведения 4.3:
ускорение работы системы; более точный набор на клавиатуре; скрытая возможность управления процессами программ (необходима активация); поддержка OpenGL/ES 3.0 (не на всех устройствах).
Подробности:
http://developer.android.com/about/versions/android-4.3.html

Android 4.4


Kit Kat
октябрь 2013
(API level: 19)
Нововведения:
многозадачность, оптимизация распределения ресурсов между приложениями; определитель номера работает не только с адресной книгой (например, Google maps); серьезная интеграция приложения Hangouts (отправка SMS, MMS, голосовые и видеовызовы); в состав вошел Quickoffice, интегрированный с Google Drive; поддержка принтеров, подключение через приложения поддерживающие печать (например, Google Cloud Print, HP ePrint); поддержка стандарта Wi-Fi Miracast, позволяющий вещать изображение на телевизор; возможность захвата экрана для записи видео.
Подробности:
http://developer.android.com/about/versions/android-4.4.html
Марат Нуриджанян
Марат Нуриджанян

Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html).

Там скачать можно только Android Studio

Владимир Каункин
Владимир Каункин

В самостоятельной работе 2 в примере решения задания некорректно загадывается число (в двух местах), выбирая случайное целое число из диапазона [0, 99] вместо [1, 100], как того требует условие. Кроме того, загадывание числа всё таки лучше вынести в отдельный метод, как мне кажется.