Android 4 для профессионалов. Создание приложений для планшетных компьютеров и смартфонов

Android 4 для профессионалов. Создание приложений для планшетных компьютеров и смартфонов
Автор: Сатия Коматинени, Дэйв Маклин
Год: 2012
ISBN: 978-5-8459-1801-7
Страниц: 880
Язык: Русский
Формат: PDF
Размер: 12 Мб

Download

Книга посвящена построению реальных мобильных приложений с использованием новой версии Android SDK 4 (Ice Cream Sandwich), которая унифицирует применение Gingerbread для смартфонов, Honeycomb для планшетов и следующих дополнений, таких как Google TV и т.п. Книга является обновлением предшествующего издания и раскрывает все аспекты, начиная с основ создания приложений для встроенных устройств, смартфонов и планшетных ПК и заканчивая расширенными концепциями, такими как построение трехмерных компонентов, реализация многозадачности, работа с датчиками, создание дополненной реальности, улучшенная поддержка виджетов домашнего экрана и многое другое.

+

Вычисления стали более доступными, чем это было ранее. Карманные устройства превратились в вычислительные платформы. Телефон ли, планшет ли — имеющиеся на рынке мобильные устройства сейчас настолько способны выполнять вычисления общего назначения, что они превратились в настоящие персональные компьютеры. Все производители традиционных компьютеров выпускают устройства различных форм-факторов на базе ОС Android. Битвы между операционными системами, вычислительными платформам, языками программирования и средами разработки переместились на мобильные устройства и вспыхнули с новой силой. Наблюдается также подъем программирования для мобильных устройств, по мере того как все больше IT-приложений выпускаются и в мобильных вариантах. В этой книге мы покажем, как применить навыки работы на Java для написания программ
для устройств, которые работают на платформе Android компании Google (developer.android.com/index.html) — платформе с открытым исходным кодом для
разработки ПО для мобильных и планшетных устройств. В настоящей главе содержится обзор платформы Android и ее SDK, беглый обзор основных пакетов, краткое содержание всех глав, описание преимущества доступности исходного кода Android и выгод от программирования для платформы Android.

Новая платформа для нового персонального компьютера
Платформа Android основана на идее вычислений общего назначения с помощью карманных устройств. Эта комплексная платформа предлагает стек Linux-подобной операционной системы для управления устройствами, памятью и процессами. Библиотеки Java-кода Android предназначены для работы с телефонией, видео, голосом, графикой, подключениями, программированием пользовательского интерфейса и рядом других аспектов таких устройств.

Android SDK поддерживает платформу Java Platform, Standard Edition (Java SE) почти в полном объеме, за исключением средств Abstract Window Toolkit (AWT) и Swing. Вместо них в Android SDK имеется собственная обширная инфраструктура для построения современных пользовательских интерфейсов. Поскольку программирование приложений осуществляется на языке Java, можно было ожидать, что понадобится виртуальная машина Java Virtual Machine (JVM), которая отвечает за интерпретацию байт-кода Java во время выполнения. JVM обычно обеспечивает необходимую оптимизацию, что помогает Java достичь уровней производительности, сравнимых с компилируемыми языками вроде C и C++. ОС Android содержит собственную оптимизированную машину JVM для
выполнения скомпилированных файлов Java-классов, которая учитывает ограничения карманных устройств на память, скорость работы процессора и электропитание. Эта виртуальная машина называется Dalvik VM, и мы подробно ознакомимся с ней в разделе “Знакомство с Dalvik VM”.

История Android
В мобильных телефонах используются различные операционные системы: Symbian OS, Microsoft Windows Phone OS, Mobile Linux, iPhone OS (на основе Mac OS X), Moblin (от компании Intel) и многие другие патентованные ОС. К настоящему времени ни одна из них не стала общепринятым стандартом. Доступные API-интерфейсы и среды для разработки мобильных приложений обладают слишком многими ограничениями и проигрывают в сравнении с инфраструктурами настольных компьютеров. В отличие от них, платформа Android предлагает открытость, экономичность, доступный исходный код и,
что более важно, компактную высокоуровневую и согласованную среду разработки. Компания Google приобрела на тот момент только образовавшуюся компанию
Android Inc. в 2005 г. и тем самым начала разработку платформы Android (рис. 1.2). Основные действующие лица в Android Inc. — Энди Рубин (Andy Rubin), Рич Майнер (Rich Miner), Ник Сирс (Nick Sears) и Крис Уайт (Chris White). Android SDK был выпущен в ноябре 2007 г. сначала как “пробный вариант”. В сентябре 2008 г. компания T-Mobile объявила о выпуске T-Mobile G1 — первого смартфона на платформе Android. С тех пор мы могли наблюдать выпуск SDK версий 2.0, 3.0, а
теперь и 4.0 — грубо говоря, ежегодно по одному SDK. Появление устройств, работающих под управлением Android, поначалу было похоже на слабый ручеек, но теперь оно сродни бурному потоку. Одной из ключевых архитектурных целей при разработке Android является возможность взаимодействия приложений друг с другом и совместное использование их компонентов. Такое многократное использование применимо не только к службам, но также к данным и пользовательскому интерфейсу.

ОС Android дала импульс движению разработчиков и впоследствии поддерживала его с помощью созданных самостоятельно компонентов для использования модели облачных вычислений, предлагаемых веб-ресурсами, и локального хранения данных на самом карманном устройстве. Быстрому признанию Android способствовала и поддержка реляционной СУБД в устройстве. В выпусках 1.0 и 1.1 (2008 г.) Android не поддерживала программную клавиатуру и требовала наличия на устройствах физических клавиш. С выходом SDK 1.5 в апреле 2009 г. эта проблема была устранена, и был добавлен ряд других компонентов, таких как расширенные возможности записи медиафайлов, виджеты и Live Folders (“живые папки”). В сентябре 2009 г. вышел выпуск ОС Android 1.6, а через месяц — Android 2.0, что привело к появлению целого потока Android-устройств к рождеству 2009 г. В этом выпуске появились расширенные возможности поиска и речевого воспроизведения текста. Самыми заметными нововведениями в Android 2.3 были дистанционное удаление администраторами конфиденциальных данных, возможность проведения фото- и видеосъемки при низкой освещенности, работа с точками доступа Wi-Fi, существенное повышение производительности, расширенная функциональность Bluetooth, установка приложений по желанию на SD-карту, поддержка OpenGL ES 2.0, улучшенное резервное копирование, повышенное удобство поиска, поддержка Near Field Communications для обработки кредитных карт, существенно улучшенная поддержка движения и датчиков (подобно Wii), видеочат и усовершенствованный Android Market. Версия Android 3.0 ориентирована на планшетные устройства и гораздо более мощные двухъядерные процессоры, такие как NVIDIA Tegra 2. Основным новшеством данного выпуска стала поддержка экранов больших размеров. Введена существенно более новая концепция под названием фрагменты (fragments). Фрагменты присутствуют в Android 3.0 повсеместно. Были добавлены возможности, больше относящиеся к настольным компьютерам, вроде панели действий (action bar) и перетаскивания (drag and drop). В Android 3.0 существенно улучшены виджеты домашнего экрана, и стали доступными дополнительные элементы управления пользовательского интерфейса. В области трехмерной графики была улучшена поддержка OpenGL с Renderscript для дальнейшего добавления ES 2.0. Словом, Android 3.0 — великолепный инструмент для работы с планшетами. Тем не менее, функциональность версии Android 3.0 была ограничена для планшетов. На время выхода выпуска 3.0 ветвь 2.x ОС Android продолжала обслуживать телефоны, тогда как ветви 3.x обслуживали планшеты. Начиная с выпуска 4.0, эти ветви в ОС Android были слиты в единый SDK. Для пользователей телефонов главное отличие в интерфейсе связано с тем, что принципы работы с планшетами также стали доступными в телефонах.
Ниже перечислены ключевые аспекты работы пользователей в Android 4.0.

  • Новый шрифт под названием Roboto для обеспечения четкости изображения на
    экранах с высоким разрешением.
  • Улучшенный способ организации приложений в папки на домашних страницах.
  • Возможность перетаскивания приложений и папок в лоток избранного, который
    всегда присутствует в нижней части экрана устройства.
  • Оптимизация уведомлений на основе типа устройства. В случае небольших уст-
    ройств они отображаются в верхней части экрана, а в случае устройств больших
    размеров — в системной области внизу экрана.
  • Виджеты с возможностью прокрутки и изменения размеров.
  • Разнообразные способы разблокирования экранов.
  • Проверка орфографии.
  •  Улучшенный голосовой ввод с возможностью непрерывного разговора.
  • Большее число элементов управления для работы с сетевыми данными.
  • Расширенное приложение Contacts с персональным профилем, во многом похо-
    жим на социальные сети.
  • Множество усовершенствований приложения календаря.
  • Улучшенное приложение камеры: непрерывная фокусировка, нулевая задержка
    срабатывания затвора, распознавание лиц, выбор точки фокусировки нажатием
    на любую область экрана (tap-to-focus) и редактор фотографий.
  • “Живые эффекты” (Live Effects) на изображениях и видео.
  • Быстрый способ получения и совместного использования экранных снимков.
  • Более чем двукратное увеличение производительности браузера.
  • Улучшенная работа с электронной почтой.
  • Новая концепция под названием направленной передачи Android (Android Beam)
    для совместного использования данных на основе NFC.
  • Поддержка стандарта Wi-Fi Direct для распространения служб P2P.
  • Профиль Bluetooth Health Device Profile.
    А вот ключевые аспекты поддержки разработчиков в версии 4.0.
  • Модернизированная анимация на основе изменения свойств объектов, включая
    представления.
  • Фиксированное количество поведений списковых виджетов из версии 3.0.
  • Значительно более зрелая панель действий со встроенным поиском.
  • Поддержка множества мобильных стандартов: Advanced Audio Distribution Profile
    (A2DP: возможность использования внешних колонок), Realtime Transport Protocol
    (RTP: для передачи потокового аудио/видео по протоколу IP), Media Transfer
    Protocol (MTP), Picture Transfer Protocol (PTP: для привязки к компьютерам с целью
    загрузки фотографий и медиафайлов) и Bluetooth Headset Profile (HSP).
  • Полное шифрование устройства.
  • Технические средства защиты авторских прав (Digital Rights Management — DRM).
  • Зашифрованное хранилище и пароли.
  • Интерфейс Social API, включающий персональные профили.
  • Расширенный интерфейс Calendar API.
  • Интерфейс Voice Mail API.

 

Знакомство с Dalvik VM
При работе с Android в Google много усилий было потрачено на оптимизацию проектирования для маломощных карманных устройств. Карманные устройства отстают от своих настольных собратьев по объему памяти и скорости лет на восемь-десять. Их вычислительные возможности ограничены. Как результат, при работе на карманных устройствах требования к производительности оказываются очень жесткими, и проектировщикам приходится оптимизировать каждую мелочь. Если посмотреть список пакетов в Android, можно увидеть, что являются полнофункциональными и обширными. Эти проблемы заставили Google пересмотреть стандартную реализацию JVM во многих отношениях. Ключевой фигурой в реализации Google собственной JVM является Дэн Борнштейн (Dan Bornstein), который написал Dalvik VM (по названию города в Исландии). Dalvik VM объединяет сгенерированные файлы Java-классов с одним или несколькими исполняемыми файлами Dalvik Executable (.dex). Целью Dalvik VM является нахождение всевозможных способов оптимизации JVM в плане занимаемого про-
странства, производительности и срока службы батареи. Окончательный исполняемый код в Android, как результат наличия Dalvik VM, основан не на байт-коде Java, а на .dex-файлах. Это означает невозможность непосредственного выполнения байт-кода Java; необходимо взять файлы Java-классов и преобразовать их в готовые для связывания .dex-файлы.

Программный стек Android
Мы уже познакомились с историей развития ОС Android и с ее возможностями оптимизации, включая Dalvik VM, и при этом был упомянут программный стек Java. В настоящем разделе мы рассмотрим аспект разработки для Android. На рис. 1.3 показан программный стек Android с точки зрения разработчика.
Основой платформы Android является ядро Linux, которое отвечает за драйверы устройств, доступ к ресурсам, управление электропитанием и другие функции ОС. К поставляемым драйверам относятся драйверы для экрана, камеры, клавиатуры, Wi-Fi, флешпамяти, звука и IPC (inter-process communication — взаимодействие процессов). И хотя ядром является Linux, большинство приложений — если не все — на Android-устройствах, такие как Motorola Droid, разработаны на Java и выполняются с помощью Dalvik VM. На следующем уровне, непосредственно над ядром, находится ряд библиотек C/C++: OpenGL, WebKit, FreeType, Secure Sockets Layer (SSL), библиотека времени выполнения C (libc), SQLite и Media. Системная библиотека C, за основу которой взят дистрибутив BSD (Berkeley Software Distribution), оптимизирована (и примерно вполовину ужата) для устройств со встроенной ОС Linux. Библиотеки работы с медиа основаны на продукте OpenCORE от PacketVideo (www. packetvideo.com). Эти библиотеки отвечают за запись и воспроизведение различных аудио- и видеоформатов. Библиотека Surface Manager управляет доступом к системе дисплея и поддерживает двухмерную и трехмерную графику. Библиотека WebKit отвечает за поддержку браузера; именно она используется в Google Chrome и Apple Safari. Библиотека FreeType отвечает за поддержку шрифтов. SQLite (www. sqlite.org) представляет собой реляционную СУБД, доступную непосредственно на устройстве. SQLite также является независимой разработкой с открытым кодом для реляционных СУБД и не привязана конкретно к Android. С базами данных Android можно работать и с помощью других средств, предназначенных для SQLite. В основном инфраструктура для разработки приложений обращается к этим базовым библиотекам через Dalvik VM — шлюз для платформы Android. Как уже было сказано в предыдущих разделах, виртуальная машина Dalvik оптимизирована для работы нескольких экземпляров виртуальных машин. При обращении Java-приложений к этим
базовым библиотекам каждое приложение получает собственный экземпляр виртуальной машины. Основные библиотеки из API-интерфейса Android Java предназначены для работы с телефонией, ресурсами, местоположениями, пользовательским интерфейсом, поставщиками контента (данные) и диспетчерами пакетов (установка, защита и т.д.). Программисты разрабатывают приложения для конечных пользователей на базе этого Java API. Примеры приложений для конечных пользователей на устройстве — Home (Домашний экран), Contacts (Контакты), Phone (Телефон) и Browser (Браузер). ОС Android также поддерживает библиотеку двумерной графики собственной разработки Google под названием Skia, которая написана на C и C++. Кроме того, Skia образует ядро браузера Google Chrome. Однако API-интерфейсы для работы с трехмерной графикой основаны на реализации OpenGL ES от группы Khronos (www.khronos.org). OpenGL ES содержит подмножества OpenGL ES, ориентированные на встроенные системы. С точки зрения медиа платформа Android поддерживает наиболее распространенные форматы аудиофайлов, видеофайлов и изображений. С точки зрения беспроводной связи Android содержит API-интерфейсы для поддержки Bluetooth, EDGE, 3G, Wi-Fi и телефонии Global System for Mobile Communication (GSM), в зависимости от оборудования.

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

Эмулятор Android
Android SDK поставляется с подключаемым модулем Eclipse под названием ADT (Android Development Tools — инструментальные средства разработки для Android). Это интегрированная среда разработки (Integrated Development Environment — IDE), предназначенная для построения, отладки и тестирования Java-приложений. (ADT подробно рассматривается в главе 2.) Android SDK можно также использовать и без ADT, применяя вместо него инструменты командной строки. Оба подхода поддерживают эмулятор, с помощью которого можно запускать, отлаживать и тестировать приложения. В 90% разработки приложений можно обойтись без физического устройства. Полнофункциональный эмулятор Android имитирует поведение большинства функций устройств. К ограничениям эмулятора относятся подключения через USB, захват фото и видео, наушники, имитация работы батареи, Bluetooth, Wi-Fi, NFC и OpenGL ES 2.0. Эмулятор Android выполняет свою работу с помощью технологии с открытым исходным кодом “эмулятора процессора”, которая называется QEMU и разработана компанией Fabrice Bellard (wiki.qemu.org/Index.html). Это та самая технология, которая позволяет эмулировать одну операционную систему поверх другой, независимо от процессора. QEMU осуществляет эмуляцию на уровне центрального процессора. В эмуляторе Android процессор основан на Advanced RISC Machine (ARM). ARM представляет собой архитектуру 32-разрядного микропроцессора на основе компьютера с сокращенным набором команд (Reduced Instruction Set Computer — RISC), простота и скорость работы которого достигается за счет сокращения количества возможных инструкций. Эмулятор выполняет на этом моделируемом процессоре Android-версию Linux. Архитектура ARM широко применяется в карманных устройствах и других встроенных электронных устройствах, где важно низкое энергопотребление. Большая часть рынка мобильных телефонов использует процессоры, основанные на этой архитектуре. Подробную информацию об эмуляторе можно найти в документации по Android SDK по адресу developer.android.com/guide/developing/tools/emulator.html.