Разработка и сопровождение приложений на базе операционной системы Android

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 03.04.2015
Размер файла 2,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • 1. Анализ информации и постановка задачи
  • 1.1 Общие характеристики операционной системы Android
  • 1.1.1 Создание и развитие Android
  • 1.1.2 Анализ Dalvik VM
  • 1.1.3 Сравнение Android и Java ME
  • 1.1.4 Программный стек Android
  • 1.2 Постановка задачи
  • 2. Разработка принципов работы приложения
  • 2.1 Комплект для разработки приложений Android SDK
  • 2.1.1 Эмулятор Android
  • 2.1.2 Компоненты пользовательского интерфейса Android
  • 2.1.3 Пакеты, входящие в состав Android SDK
  • 2.2 Сравнительный анализ файловых менеджеров для Android
  • 2.3 Разработка структуры приложения
  • 3. Разработка программного обеспечения
  • 3.1 Графический интерфейс пользователя
  • 3.1.1 Файл разметки main. xml
  • 3.1.2 Файл меню опций icon_menu_for_main. xml
  • 3.1.3 Файл разметки navigation. xml
  • 3.1.4 Файл меню опций icon_menu_for_navigation. xml
  • 3.1.5 Файл разметки элемента списка row. xml
  • 3.2 MainActivity. Java
  • 3.3 NavigationActivity. java
  • 3.4 ArrayAdapterForList. java
  • 3.5 Файл манифеста AndoidManifest. xml
  • 3.6 Работа с приложением
  • 4. Расчет стоимости программного обеспечения
  • 4.1 Основные положения расчета стоимости программного обеспечения
  • 4.2 Исходные данные
  • 4.3 Определение объема программного обеспечения
  • 4.4 Расчет трудоемкости ПО
  • 4.5 Расчет заработной платы разработчиков ПО
  • 4.6 Расчет отчислений, налогов и затрат
  • 4.7 Расчет себестоимости, отпускной цены и прибыли
  • 5. Требования к организации рабочего места инженера-программиста
  • 5.1 Анализ воздействия производственных факторов на рабочем месте инженера-программиста
  • 5.2 Гигиенические требования к организации рабочего места инженера-программиста
  • Заключение
  • Список использованных источников
  • Приложения

Введение

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

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

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

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

приложение интернет android файл

В дипломном проекте рассматривается пример разработки приложения на основе создания менеджера файлов. Очевидно, что целью проекта было создание файлового менеджера, который позволит получать доступ к файлам, находящимся в "облачном хранилище" - web-сервис, позволяющий пользователям хранить свои данные в сети Интернет, а также изучение операционной системы Android, принципов создания приложений при помощи Software Development Kit (SDK). Для реализации цели необходимо также проанализировать характеристики существующих файловых менеджеров.

1. Анализ информации и постановка задачи

Анализ информации включает в себя изучение собственно операционной системы Android, а именно истории развития, анализ используемой виртуальной машины Dalvik Virtual Machine, сравнение Android с Java Micro Edition и рассмотрение программного стека операционной системы.

1.1 Общие характеристики операционной системы Android

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

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

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

На рисунке 1 дано схематическое представление программного стека Android.

Рисунок 1.1 - Схематическое представление программного стека Android

1.1.1 Создание и развитие Android

В мобильных телефонах используется целый ряд операционных систем - например, Symbian OS, Microsoft Windows Mobile, Mobile Linux, iPhone OS (на базе Mac OS X), Moblin (от Intel) и большое количество других патентованных операционных систем. Но еще ни одна из ОС не стала стандартом де-факто. Современные интерфейсы прикладного программирования (API) и среды для разработки мобильных приложений имеют слишком много ограничений и сильно уступают аналогичным фреймворкам для локальных компьютеров. Для платформы Android характерны открытость и доступность, ее код распространяется свободно, а фреймворк разработки отличается высоким техническим уровнем.

Google приобрела стартап Android Inc. в 2005 году, чтобы приступить к разработке платформы Android (рисунок 1.2). Ведущими фигурами в Android Inc. были Энди Рубин, Рич Майнер, Ник Сиэрс и Крис Уайт.

Рисунок 1.2 - Хронология развития Android

В конце 2007 года группа лидирующих компаний, работающих в области мобильной связи, сплотилась вокруг платформы Android, сформировав Open Handset Alliance. Некоторыми из наиболее известных членов альянса являются: Sprint Nextel, T-Mobile, Motorola, Samsung, Sony Ericsson, Toshiba, Vodafone, Google, Intel, Texas Instruments.

Одной из целей альянса является ускоренное внедрение инноваций и улучшение отклика на нужды потребителя - и первым значительным результатом работы альянса стала платформа Android. Она была разработана для удовлетворения потребностей операторов мобильной связи, производителей мобильных устройств и разработчиков программ. Члены альянса приняли решение предоставить значительный объем интеллектуальной собственности по свободной лицензии Apache, версия 2.0.

Сначала инструментарий Android SDK был выпущен в ноябре 2007 года как предварительный вариант. В сентябре 2008 компания Т-Mobile анонсировала выход Т-Mobile G1, первого смартфона, работающего на платформе Android. Всего через несколько дней Google анонсировала выход Android SDK Release Candidate 1.0. В октябре 2008 года Google открыла доступ к исходному коду платформы Android в соответствии со свободной лицензией Apache.

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

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

В начале 2008 года Google выпустила мобильное устройство под названием Android Dev Phone 1, на котором можно было использовать программы Android, находясь вне зоны действия какой-либо мобильной сети. Это устройство (стоившее около $400) должно было позволить разработчикам проводить эксперименты с настоящими устройствами, на которых Android можно было использовать, не заключая никаких договоров. Примерно в то же время Google выпустила исправленную версию ОС под номером 1.1, которая была полностью основана на версии 1.0. В версиях 1.0 и 1.1 Android не поддерживала виртуальную клавиатуру, требовалось устройство, на котором были бы настоящие клавиши. Эта проблема была устранена в апреле 2009 года, когда вышел комплект SDK 1.5, в котором появились и другие возможности, например продвинутые функции записи медиаданных, виджеты и живые каталоги. В сентябре 2009 вышла версия Android 1.6, а через месяц за ней последовал Android 2.0, поддержавший бурные продажи устройств Android в рождественский сезон 2009 года. В этом релизе появились улучшенные поисковые возможности и функция преобразования текста в речь. В этом релизе появилась также поддержка управления жестами и функция мультитач. Android 2.0 поддерживает HTML 5, благодаря чему в нем появляются интересные функции. Каждый день появляются все новые приложения для Android, размещаемые в независимых онлайновых хранилищах приложений, а также в управляемом Google онлайн-сервисе Google Play Market (ранее Android Market).

1.1.2 Анализ Dalvik VM

Android работает поверх ядра Linux. Android-приложения пишутся на языке программирования Java и выполняются в виртуальной машине (VM). Однако используется не Java VM, а открытая технология Dalvik Virtual Machine. Каждое приложение Android запускается внутри экземпляра Dalvik VM, который, в свою очередь заключен в пределах управляемого ядром Linux процесса, как показано на рисунке 1.3.

Рисунок 1.3 - Виртуальная машина Dalvik

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

В результате эксплуатационные требования к мобильным устройствам ужесточаются. Пакеты для Android являются полнофункциональными, с широкими возможностями. По данным Google, эти системные библиотеки используют от 10 до 20 Мбайт памяти, даже при применении оптимизированной виртуальной машины Java.

По этим причинам Google пришлось во многих отношениях переработать стандартную версию JVM. Основным специалистом Google, отвечающим за новую версию JVM является Дэн Борнштейн, написавший виртуальную машину Dalvik VM (Дальвик - это небольшой город на севере Исландии). Во-первых, Dalvik VM использует сгенерированные Java файлы классов и комбинирует их в один или несколько исполняемых файлов Dalvik (DEX). Машина повторно использует повторяющуюся информацию из нескольких файлов классов, эффективно снижая потребность в пространстве, и занимает (без архивации) вполовину меньше места, чем обычный файл JAR. Например, файл DEX мобильного браузера, используемого в Android, имеет размер около 200 Кбайт, а аналогичный файл JAR без архивации занимает около 500 Кбайт. Файл DEX программы-будильника занимает 50 Кбайт, а версия JAR - без малого в два раза больше.

Во-вторых, Google тонко настроила в Dalvik VM процесс сборки мусора (garbage collection), но в ранних версиях было решено обойтись без динамического компилятора (JIT). Насколько можно судить, в коде версии 2.0 содержатся все необходимые источники для компилятора JIT, но в окончательной версии эти источники не активированы. Ожидается, что они появятся в следующих релизах. Такой выбор оправдан, так как многие корневые библиотеки Android, в том числе графические, написаны на С и C++. Например, графические интерфейсы прикладного программирования для Java являются тонкими классами-обертками, в которых заключен нативный код, использующий собственный интерфейс Java (Java Native Interface). Подобным образом в Android предоставляется оптимизированная нативная библиотека на базе С для доступа к базе данных SQLite, но эта библиотека инкапсулирована в высокоуровневом интерфейсе прикладного программирования (API) для Java. Поскольку большая часть корневого кода написана на С и C++, специалисты Google сочли, что компилирование JIT не очень повлияет на работу системы.

Наконец, в Dalvik VM используется иной вид генерирования ассемблерного кода, в ходе которого в качестве основных элементов хранения данных используются реестры, а не стек. Таким образом, Google рассчитывает сократить количество команд на 30%. Следует отметить, что конечный исполняемый код в Android, получаемый после обработки Dalvik VM, основан не на байт-коде Java, а на файлах DEX. Это означает, что невозможно непосредственно выполнять байт-код Java; придется запустить файлы классов Java, а затем преобразовать их в готовые связываемые файлы DEX.

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

1.1.3 Сравнение Android и Java ME

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

Такой комплексный подход отличается от других решений, используемых в программировании для мобильных устройств, например от Java ME. Кратко рассмотрим Java ME, и сравним оба подхода. На рисунке 1.4 показана доступность Java для различных конфигураций вычислительных машин.

Рисунок 1.4 - Конфигурация Java для различных вычислительных машин

Стандартная версия платформы Java (Java SE) подходит для персональных компьютеров и рабочих станций. Корпоративная версия платформы Java (Java ЕЕ) разработана для серверов. Микроверсия платформы Java (Java ME) является сокращенной и предназначена для небольших устройств. Java ME доступна в виде двух вариантов конфигурации. Первый вариант называется "конфигурация коммуникационных устройств" (Connected Device Configuration, CDC). Java ME для CDC содержит упрощенную версию Java SE - с меньшим количеством пакетов, с меньшим количеством классов в них, и даже с меньшим количеством методов и полей в этих классах. Для оборудования и устройств, имеющих дополнительные ограничения, в Java применяется конфигурация для устройств с ограниченными ресурсами (Connected Limited Device Configuration, CLDC). Существующие интерфейсы прикладного программирования для различных конфигураций Java сравниваются на рисунке 1.5.

Любые дополнительные пакеты, устанавливаемые "поверх" основного интерфейса прикладного программирования с конфигурацией CDC или CLDC, считаются "профилями", которые стандартизируются процессом JSR (запрос на спецификацию Java). Каждый заданный профиль предоставляет разработчику дополнительный набор интерфейсов прикладного программирования.

Рисунок 1.5 - Доступность интерфейсов прикладного программирования в Java

Платформа CLDC Java базируется на специализированной и сильно уменьшенной версии JVM, называемой "виртуальная машина К" (К Virtual Machine, KVM), которая способна работать на устройствах с памятью всего 128 Кбайт. В CLDC под MIDP 2.0 (профиль для мобильного устройства с информационными функциями) могут использоваться дополнительные интерфейсы прикладного программирования. Такой интерфейс содержит ряд пакетов для javax. microedition. *. К числу основных пакетов относятся мидлеты (простые приложения), пакет для пользовательских интерфейсов, называемый LCDUI, игровые и медиапакеты.

Интерфейсы прикладного программирования для конфигурации CDC содержат java. awt API и java.net API и некоторые API для реализации функций безопасности, дополнительно к тем интерфейсам, которые содержатся в CLDC. Дополнительные профили, устанавливаемые поверх CDC, открывают разработчикам приложений доступ к прикладному интерфейсу программирования javax. microedition. xlet (xlet - это приложение в конфигурации CDC). Поверх конфигурации CDC может находиться около десяти опциональных пакетов, которые вы можете использовать, в том числе Bluetooth, Media API, OpenGL для встроенных систем (OpenGL ES), Java API для обработки XML QAXP), JAXP-RPC, Java 2D, Swing, интерфейс вызова удаленных методов Java (Java RMI), взаимодействие Java и баз данных (JDBC) и интерфейс прикладного программирования Java. Вообще, спецификация Java ME содержит более 20 JSR. Кроме того, ожидается, что при написании Java-программ для мобильных устройств JavaFX будет играть возрастающую роль.

Сравним Java ME с Android:

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

· понятность. Поскольку Android ориентирована на работу с конкретным устройством, она понятнее, чем Java ME. В Java ME используется несколько вариантов пользовательских интерфейсов для каждой конфигурации, в зависимости от того, какие функции поддерживает устройство: мидлеты, икслеты (xlets), AWT и Swing. Отслеживать JSR для каждой спецификации Java ME сложнее. Они дольше разрабатываются, и найти определенные их версии может быть непросто;

· быстрота реагирования. Ожидается, что Dalvik VM будет оптимизирована лучше и будет иметь более высокую скорость отклика, чем стандартная виртуальная машина JVM, используемая на устройстве с аналогичной конфигурацией. Можно сравнить Dalvik VM и KVM, но KVM предназначена для работы с менее сложными устройствами, располагающими значительно более скромными объемами памяти;

· совместимость с Java. Поскольку Android работает с Dalvik VM, в ней используется не байт-код Java, а байт-код в файлах DEX. Это не очень большая проблема, если Java скомпилирована в виде стандартных файлов классов Java. Только непосредственная интерпретация байт-кода Java будет невозможна;

· широта внедрения. Java ME широко поддерживается в мобильных устройствах, так как на ее основе работает большинство мобильных телефонов. Но Android отличается однородностью, дешевизной и простотой разработки программ - поэтому разработчиков Java могут заинтересовать и написание программ для Android;

· поддержка Java SE. Если сравнить поддержку Java SE в CDC и в Android, то в Android такая поддержка реализована чуть более полно, если не считать AWT и Swing. Как уже упоминалось выше, в Android используется собственный подход к работе с пользовательскими интерфейсами. На самом деле декларативные пользовательские интерфейсы Android напоминают более продвинутые UI-платформы, такие как Microsoft Silverlight и JavaFX от Sun.

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

1.1.4 Программный стек Android

При рассмотрении программного стека Android можно представить структуру операционной системы Android. Подробное описание программного стека Android приведено на рисунке 1.6.

Рисунок 1.6 - Подробное описание программного стека Android

Центром платформы Android является ядро Linux версии 2.6.29, отвечающее за драйверы устройств, доступ к ресурсам, управление энергопотреблением и решение других задач ОС. В такой сборке имеются драйверы устройств для работы с дисплеем, камерой, клавиатурой, Wi-Fi, флеш-памятью, аудио и для обеспечения связи между процессами (Inter-Process Communication, IPC). Хотя в системе и используется ядро Linux, подавляющее большинство приложений на устройствах Android разработаны на Java и работают при помощи Dalvik VM.

На следующем уровне, выше ядра, находится ряд библиотек C/C++, в частности OpenGL, Web Kit, FreeType, Secure Sockets Layer (SSL), библиотека времени выполнения С (libc), SQLite и Media. Системная библиотека С, основанная на Berkeley Software Distribution (BSD), настроена для работы со встроенными устройствами, работающими под Linux (при этом ее размер уменьшен по сравнению с первоначальным примерно в два раза). Медиабиблиотеки работают на основе PacketVideo OpenCORE. Эти библиотеки отвечают за запись и воспроизведение аудио - и видеоформатов. Библиотека, называемая Surface Manager, контролирует доступ к системе отображения данных и поддерживает 2D и 3D.

Библиотека WebKit отвечает за поддержку браузеров; именно эта библиотека поддерживает Google Chrome и Apple Safari. Библиотека FreeType поддерживает шрифты. SQLite - это реляционная база данных, которая находится на самом устройстве. Кроме того, SQLite - это независимая разработка с открытым кодом, она не связана непосредственно с Android. Можно использовать инструменты, предназначенные для SQLite, и при работе с базами данных Android.

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

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

В Android также поддерживается пользовательская библиотека Google Skia, предназначенная для работы с 2D-графикой. Эта библиотека написана на С и C++. На Skia основан браузер Google Chrome. Однако прикладные интерфейсы для программирования 3D в Android работают на основе разновидности OpenGL ES от группы Khronos. В OpenGL ES содержатся сокращенные версии OpenGL, оптимизированные для работы со встроенными системами.

Для работы с медиа на платформе Android поддерживается большинство распространенных форматов аудио, видео и изображений. В области беспроводной связи Android располагает специальными API для поддержки Bluetooth, EDGE, 3G, Wi-Fi и глобальной системы мобильной связи (GSM), зависимыми от оборудования.

1.2 Постановка задачи

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

2. Разработка принципов работы приложения

Для разработки собственного приложения необходимо изучить инструментарий комплекта для разработки программ Android Software Development Kit (SDK), а также рассмотреть характеристики существующих файловых менеджеров.

2.1 Комплект для разработки приложений Android SDK

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

2.1.1 Эмулятор Android

Комплект для разработки программ (SDK) для Android поставляется вместе с плагином Eclipse, который называется инструментарием для разработки в Android (Android Development Tools, ADT). Этот инструмент интегрированной среды разработки (IDE) используется для создания, отладки и тестирования приложений на Java. Android SDK можно использовать и без ADT; вместо этого инструментария можно применять средства командной строки. Эмулятор поддерживается при использовании обоих подходов, и с его помощью вы можете запускать, исправлять и тестировать свои приложения.90% разработки приложения можно завершить, вообще не пользуясь реальным устройством. Полнофункциональный эмулятор Android воспроизводит большинство характеристик устройств. К числу тех функций, которые нельзя имитировать в эмуляторе, относятся USB-соединения, работа камеры и видеосъемка, имитация работы наушников, батарей и технология Bluetooth.

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

При работе эмулятора Android имитируется процессор, функционирующий на базе ARM (Advanced RISC Machine, усовершенствованная RISC-машина). ARM - это 32-битная архитектура микропроцессоров, основанная на RISC (Reduced Instruction Set Computer, компьютер с сокращенным набором команд), в которой благодаря уменьшению числа команд достигается простой дизайн и увеличение скорости работы. Эмулятор задействует на таком имитируемом процессоре версию Linux, используемую в Android.

ARM широко используется в мобильных устройствах и во встроенных электронных приборах, где важно обходиться небольшим количеством энергии. Многие имеющиеся на рынке мобильные устройства имеют процессоры с такой архитектурой. Например, Apple Newton основан на процессоре ARM6. Устройства iPod, Nintendo DS и Game Boy Advance работают на архитектуре ARM версии 4, в которой используется около 30 000 транзисторов. Классический Pentium содержит 3,2 млн. транзисторов.

2.1.2 Компоненты пользовательского интерфейса Android

В Android используется UI-фреймворк, сравнимый с другими полнофункциональными UI-фреймворками, применяемыми на локальных компьютерах. Он является более современным и асинхронным по природе. По существу, UI-фреймворк Android относится уже к четвертому поколению, если считать первым поколением традиционный прикладной интерфейс программирования Microsoft Windows, основанный на С, а MFC (Microsoft Foundation Classes, библиотека базовых классов Microsoft на основе C++) - вторым. В таком случае UI-фреймворк Swing, основанный на Java, будет третьим поколением, так как предлагаемые в нем возможности дизайна значительно превосходят по гибкости MFC. Android UI, JavaFX, Microsoft Silverlight и язык пользовательских интерфейсов Mozilla XML (XUL) относятся к новому типу UI-фреймворков четвертого поколения, в котором UI является декларативным и поддерживает независимую темизацию.

При программировании в пользовательском интерфейсе Android применяется объявление интерфейса в файлах XML. Затем эти определения представления (view definitions) XML загружаются в приложение с пользовательским интерфейсом как окна. Даже меню приложения загружаются из файлов XML. Экраны (окна) Android часто называются активностями (activities), которые включают в себя несколько видов, нужных пользователю, чтобы выполнить логический элемент процесса. Виды (views) являются основными элементами, из которых в Android состоит пользовательский интерфейс. Виды можно объединять в группы (view groups). Для внутренней организации видов используются давно известные в программировании концепции холст (canvas), рисование (painting) и взаимодействие пользователя с системой (user interaction).

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

Одной из ключевых концепций фреймворка Android является управление жизненным циклом (lifecycle) окон явлений (activity windows). В системе применяются протоколы, поэтому Android может управлять ситуацией по мере того, как пользователи скрывают, восстанавливают, останавливают и закрывают окна явлений.

Базовые компоненты Android

Фреймворк пользовательского интерфейса Android вместе с другими компонентами Android базируется на новой сущности, называемой намерением (intent). Намерение - это сложное явление, в котором сочетаются такие идеи, как сообщения, выводимые в окнах (windowing messages), действия (actions), модели типа "публикация и подписка" (publish-and-subscribe), межпроцессный обмен информацией и реестры приложений. Ниже приведен пример использования класса Intent для активации или запуска веб-браузера:

public static void invokeWebBrowser (Activity activity)

{

Intent intent = new Intent (Intent. ACTION_VIEW):

intent. setData (Uri. parse ("http://www.google.com"));

activity. startActivity (intent);

}

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

Кроме того, в Android широко поддерживаются ресурсы (resources), к которым относятся хорошо знакомые вам строки (strings) и растровые изображения (bitmaps), а также некоторые менее известные элементы, в частности, основанные на XML определения представления. Использование ресурсов в данном фреймворке осуществляется новым способом, благодаря которому работа с ресурсами становится более простой, понятной и удобной. Ниже приведен пример, в котором автоматически генерируются ID ресурсов, определенных в файлах XML:

public final class R {

public static final class attr { }

public static final class drawable {

public static final int myanimation=0x7f020001;

public static final int numbersl9=0x7f02000e:

}

public static final class id {

public static final int textViewIdl=Ox7f080003;

}

public static final class layout {

public static final int frame_animations_layout=0x7f030001;

public static final int main=0x7f030002;

}

public static final class string {

public static final int hello=0x7f070000;

}

}

В данных классах автоматически сгенерированные ID соответствуют либо элементу XML-файла, либо целому такому файлу. Если понадобится использовать такие определения XML, вместо них будут применяться данные ID. Такая опосредованность очень помогает при локализации. Еще одна новаторская концепция в Android - это поставщик содержимого (content provider). Под поставщиком содержимого понимается абстракция источника данных, который можно представить как эмиттер и потребитель служб REST (Representational State Transfer, передача состояния представления). Лежащая в основе этой абстракции база данных SQLite делает данное свойство поставщиков содержимого мощным инструментом для разработки приложений. Уже было отмечено, что XML играет важнейшую роль в описании пользовательских интерфейсов Android. На примере рассмотрим, как XML выполняет эту задачу с простым шаблоном, в котором осуществляется представление текста:

<? xml version="1.0" encoding="utf-8"? >

<LinearLayout xmlns: android=http://schemas. android.com/apk/res/android>

<TextView android: id="@+id/textViewId"

android: layout_width="fill_parent"

android: layout_height="wrap_content"

android: text="@string/hello"

/>

</LinearLayout>

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

<menu xmlns: android="http://schemes. android.com/apk/res/android">

<! - B этой группе используется категория, заданная по умолчанию. - ->

<group android: id="@+id/menuGroup_Main">

<item android: id="@+id/menu_clear"

android: orderInCategory="10"

android: title="clear" />

<item android: id="@+id/menu_show_browser"

android: orderInCategory="5"

android: title="show browser" />

</group>

</menu>

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

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

<animation-list xm1ns: android="http://schemas. android.com/apk/res/android"

android: oneshot="false">

<item android: drawable="@drawable/numbers11"android: duration="50"/>

<item android: drawable="@drawable/numbers19"android: duration="50"/>

</animation-list>

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

В Android поддерживается и трехмерная графика. Это происходит благодаря тому, что в систему внедрен стандарт OpenGL ES 1.0. Подобно OpenGL, он является плоским API на базе языка С. Поскольку интерфейс прикладного программирования Android SDK базируется на Java, для доступа к OpenGL в нем следует использовать Java-связывание. В Java ME такое связывание для OpenGL ES уже определено при помощи запроса на спецификацию Java QSR 239, и в Android для OpenGL ES используется такой же вид Java-связывания.

В Android используются новые подходы, связанные с идеей информации на кончиках пальцев (information at your fingertips), доступ к которой осуществляется через домашнюю страницу. Первая из таких идей называется живые каталоги (live folders). При помощи живых каталогов можно опубликовать коллекцию элементов в виде папки, расположенной на домашней странице. Содержимое этой коллекции меняется по мере того, как изменяются лежащие в ее основе данные. Новые данные могут поступать на устройство либо со съемных носителей, либо из Интернета.

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

Интегрированный поиск Android (Integrated Android Search) - это третья идея, связанная с использованием домашней страницы. Такой вид поиска позволяет искать информацию как на самом устройстве, так и в Интернете. Данная функция Android не ограничивается одним только поиском и позволяет давать команды при помощи элемента управления поиском.

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

Кроме инструментария Android SDK, существуют другие самостоятельные инновации, которые делают процесс разработки интересным и несложным. Некоторые примеры таких явлений - XML/VM, PhoneGap и Titanium. Titanium позволяет использовать технологии HTML при программировании для основанного на WebKit браузера Android.

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

Медийные компоненты и компоненты связанные с телефонией

В Android имеются интерфейсы API, предназначенные для работы с аудио-, видео - и телефонными компонентами. Ниже приведен пример того, как воспроизвести аудиофайл из Интернета по URL:

private void playAudio (String url) throws Exception

{

mediaPlayer = new MediaPlayer ();

mediaPlayer. setDataSource (internetUrl);

mediaPlayer. prepare ():

mediaPlayer. start ():

}

А вот как аудиофайл воспроизводится с локального устройства:

{

// файл расположен в каталоге /res/raw и называется "music_filе. mрЗ"

mediaPlayer = MediaPlayer. create (this, R. raw. music_file);

mediaPlayer. start ();

}

Ниже показан пример кода для отправки SMS-сообщения:

private void sendSmsMessage (String address,String message) throws Exception

{

SmsManager smsMgr = SmsManager. getDefaultO;

smsMgr. sendTextMessage (address, null, message, null, null);

}

До версии 1.5 в Android можно было записывать только аудио, а видео - нет. В версии 1.5 была обеспечена возможность записи как аудио, так и видео. Это было сделано при помощи MediaRecorder. В версиях Android 2.0 и выше применяется движок Pico для преобразования текста в речь (синтеза речи). Интерфейс, используемый в Android для преобразования текста в речь, очень прост, как и соответствующий код:

TextToSpeech mTTS;

mTTS. speak (sometextString, TextToSpeech. QUEUE_ADD);

mTTS. setOnUtteranceCompletedListener (this);

mTTS. stop ();

mTTS. shutdown ();

mTTS. synthesizeToFile (…);

Еще несколько методов, относящихся к этой сфере:

playSilence

setLanguage

setPitch

setSpeechRate

isSpeaking

Важно отметить, что в Android все эти концепции объединены в приложение путем создания единого XML-файла, в котором определяется, каким будет пакет прикладных программ. Этот файл называется файлом описания (manifest file) (AndroidManifest. xml). Пример такого файла:

<? xml version="1.0" encoding="utf-8"? >

<manifest xmlns: android=http://schemas. android.com/apk/res/android

package="com. ai. android. HelloWorid">

android: versionCode="l"

android: versionName="1.0.0">

<application android: icon="@drawab1e/icon"

android: label="@string/app_name">

<activity android: name="HelloWorid"

android: label="@string/app_name">

<intent-filter>

<action android: name="android. intent. action. MAIN"

<category

android: name="android. intent. category. LAUNCHER"

</intent-filter>

</activity

</application>

<-/manifest>

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

2.1.3 Пакеты, входящие в состав Android SDK

Для того, чтобы составить представление о платформе Android, необходимо рассмотреть структуру пакетов Java. Поскольку Android отличается от стандартного дистрибутива SDK, важно знать, какие пакеты поддерживаются, а какие - нет. Ниже приводится краткое описание важных пакетов, входящих в состав Android SDK:

· android. app - реализует модель приложений для Android. Среди основных классов - Application, в котором описаны начальная и конечная семантика, а также ряд классов, относящихся к явлениям, элементы управления, диалоговые окна, окна с предупреждениями и уведомлениями;

· android. bluetooth - содержит классы для работы с технологией Bluetooth. К числу основных классов относятся ВluetoothAdapter, BluetoothDeviсе, BluetoothSocket, BluetoothServerSocket и BluetoothClass. Класс BluetoothAdapter можно использовать для управления адаптером Bluetooth, установленным на локальном компьютере. Этот адаптер можно включать, отключать или запускать процесс обнаружения. Класс BluetoothDeviсе представляет собой дистанционное устройство Bluetooth, к которому вы можете подключиться. Для установки связи между устройствами используются два сокета Bluetooth. Класс Bluetooth представляет собой тип устройства Bluetooth, к которому вы подключаетесь;

· android. content - реализует концепции, связанные с поставщиками содержимого. Поставщик содержимого позволяет обобщать обмен данными и их хранение. Кроме того, в данном пакете реализуются основные идеи, касающиеся намерений и унифицированных идентификаторов ресурсов (URI) в Android;

· android. content. pm - обеспечивает работу классов, относящихся к диспетчеру пакетов. Он располагает информацией о правах доступа, установленных пакетах, установленных поставщиках, службах и компонентах, например таких, как действия, а также об установленных приложениях;

· android. content. res - обеспечивает доступ к файлам ресурсов, как структурированным, так и неструктурированным. Основными классами являются AssetManager (для неструктурированных ресурсов) и Resources;

· android. database - реализует идею реферативной базы данных. Основной интерфейс называется Cursor;

· android. database. sqlite - реализует концепции из пакета android. database, используя в качестве физической базы данных SQLite. Основными классами являются SQLiteCursor, SQLiteDatabase, SQLiteQuery, SQLiteQueryBuilder и SQLiteStatement. Правда, в основном вам придется работать с классами из абстрактного пакета android. database;

· android. gesture - в этом пакете располагаются все классы и интерфейсы, необходимые для работы с заданными пользователем жестами. Основными классами являются Gesture, GestureLibrary, GestureOverlayView, GestureStore, GestureStroke, GesturePoint. Класс Gesture является подборкой GestureStrokes и GesturePoints. Жесты собраны в библиотеке GestureLibrary. Библиотеки жестов сохраняются в GestureStore. Имена жестов таковы, что система может идентифицировать их как действия;

· android. graphics - содержит классы Bitmap, Canvas, Camera, Color, Matrix, Movie, Paint, Path, Rasterizer, Shader, SweepGradient nTypeFace;

· android. graphics. drawable - предназначен для работы с протоколами рисования и фоновыми рисунками, обеспечивает анимационные эффекты при работе с отрисовываемыми объектами;

· android. graphics. drawable. shapes - обеспечивает работу с контурами, в том числе ArcShape,OvalShape, PathShape, RectShape и RoundRectShape;

· android. hardware - обеспечивает использование так называемых физических классов, предназначенных для работы с камерой. Класс Camera представляет собой обычное устройство - камеру, а класс android. graphics. Camera - графическую концепцию, не имеющую никакого отношения к физической реальной камере;

· android. location - содержит классы Address, GeoCoder, Location, LocationManager и LocationProvider. Класс Address представляет собой упрощенный язык XAL (Extensible Address Language, расширяемый язык адресов). GeoCoder позволяет узнать по адресу координаты объекта (широту и долготу) и наоборот. Location представляет информацию о широте и долготе;

· android. media - содержит классы MediaPlayer, MediaRecorder, Ringtone, AudioManager и FaceDetector. Класс MediaPl ayer предназначен для работы с потоками (streaming) и поддерживает аудио и видео. Класс Ringtone используется для проигрывания коротких звуковых фрагментов, которые могут служить рингтонами или использоваться при уведомлениях. AudioManager отвечает за контроль громкости. FaceDetector можно применять для нахождения человеческих лиц на точечных (растровых) рисунках;

· android.net - реализует основные сетевые API на уровне сокетов. Основные классы включают Uri, ConnectivityManager, Local Socket и Local ServerSocket. Здесь также следует отметить, что Android поддерживает HTTPS на уровне браузера и на уровне сети. Кроме того, Android поддерживает в браузере JavaScript;

· android.net. wifi - управляет соединяемостью по Wi-Fi. К основным классам относятся WifiManager и WifiConfiguration. Класс WifiManager отвечает за составление списка сконфигурированных сетей и за работу с активной в настоящее время сетью Wi-Fi;

· android. opengl - содержит вспомогательные классы, используемые при выполнении операций OpenGL ES. Основные классы OpenGL ES входят в состав другого набора пакетов, взятого из JSR 239.

· android. os - здесь находятся службы операционной системы, доступ к которой осуществляется средствами языка Java. Некоторые важные классы - BatteryManager, Binder, FileObserver, Handler, Looper и PowerManager. Класс Binder обеспечивает обмен информацией между процессами. FileObserver ведет учет изменений, вносимых в файлы. Класс Handler используется для выполнения задач в рамках потока сообщений, а Looper запускает сам поток сообщений;

· android. preference - позволяет приложениям предоставлять пользователям возможность управления своими настройками для этого приложения в унифицированной форме. Основными классами являются PreferenceActivity, PreferenceScreen и различные классы, производные от Preference, например CheckBoxPreference и SharedPreferences;

· android. provider - включает в себя набор предварительно подготовленных поставщиков содержимого, относящихся к интерфейсу android. content. ContentProvider. Среди поставщиков содержимого - Contacts, MediaStore, Browser и Settings. В данном наборе интерфейсов и классов хранятся метаданные для описания базовых структур данных;

· android. sax - содержит эффективный набор простых API для XML (SAX), вспомогательных классов, предназначенных для синтаксического разбора. К основным классам относятся Element, RootElement и некоторые интерфейсы ElementListener;

· android. speech - содержит константы для работы с распознаванием речи. Этот пакет включен только в версии 1.6 и выше;

· android. speech. tts - обеспечивает поддержку преобразования текста в речь. Основной класс - TextToSpeech. Можно взять фрагмент текста и запросить экземпляр этого класса поставить текст в очередь для воспроизведения в виде речи. У вас появится доступ к нескольким обратным вызовам, которые позволят вам наблюдать за речью - например, узнать, когда завершится воспроизведение. В Android используется механизм PICO TTS (Text to Speech, синтезатор речи) производства компании SVOX;

· andmid. tekphony - содержит классы CellLocation, PhoneNumberUtils и TelephonyManager. Класс TelephonyManager позволяет определить место, откуда был сделан вызов, номер телефона, название оператора связи, тип сети, тип телефона и серийный номер модуля идентификации абонента (Subscriber Identity Module, SIM);

· android. telephony. gsm - позволяет собирать информацию об адресах ячеек на основании данных о местонахождении вышек сотовой связи, а также содержит классы, отвечающие за работу с сообщениями SMS. В названии этого пакета упоминается GSM, так как первоначально стандарты обмена короткими сообщениями (SMS) определялись Глобальной системой мобильной связи (Global System for Mobile Communication);


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.