Звоните: (067) 644-70-74
Напишите нам burtrest@gmail.com

Разработка приложений для Android. Хашими

261.30 грн.

Артикул: 32618cc22b1c Категория:

Описание

год-2011

736 страниц

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

Оглавление книги 

Разработка приложений для Android. Хашими
Об авторах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
О техническом редакторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Благодарности .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 21
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Глава 1. Введение в компьютерную платформу Android . . . . . . . . . . . . . 24
Новая платформа для нового персонального компьютера . . . . . . . . . . . . . . . 24
История Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 26
Глубокий анализ Dalvik VM .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 29
Сравнение Android и Java ME .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 30
Программный стек Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 33
Разработка готовых пользовательских приложений при помощи Android SDK . 35
Эмулятор Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 35
Пользовательский интерфейс Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 36
Базовые компоненты Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 37
Продвинутые концепции пользовательского интерфейса . . . . . . . . . . 38
Служебные компоненты Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 41
Медийные компоненты Android и компоненты, связанные
с телефонией . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Пакеты Java для Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 44
Использование преимуществ исходного кода Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 48
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Глава 2. Приступая к работе .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 50
Настройка среды разработки .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 50
Скачивание JDK 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Скачивание Eclipse 3 .5 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 51
Скачивание Android SDK .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 52
Установка инструментов разработки для Android (ADT) .  .  .  .  .  .  .  .  .  .  . 53
Изучение базовых компонентов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 56
Вид . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Явление .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 56
Намерение .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 56
Поставщик содержимого . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Службы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 57
AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Виртуальные устройства Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Hello World! .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 58
Виртуальные устройства Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Изучение структуры приложения в Android . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Анализ приложения NotePad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Загрузка и запуск приложения NotePad . . . . . . . . . . . . . . . . . . . . . . . 68
Подробный анализ приложения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 69
Жизненный цикл приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Отладка вашего приложения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 81
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Глава 3. Использование ресурсов, поставщиков содержимого
и намерений .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 83
Ресурсы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 84
Строковые ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Ресурсы разметки формы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 86
Синтаксис ссылок на ресурсы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 88
Определение собственных идентификационных номеров
ресурсов для последующего использования .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 90
Скомпилированные и нескомпилированные ресурсы Android .  .  .  .  .  .  . 90
Перечисление основных ресурсов Android . . . . . . . . . . . . . . . . . . . . . 92
Работа с произвольными XML-файлами ресурсов . . . . . . . . . . . . . . . . 99
Использование необработанных ресурсов . . . . . . . . . . . . . . . . . . . . .101
Работа с активами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .102
Просмотр структуры каталогов с ресурсами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .102
Поставщики содержимого . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103
Исследование встроенных поставщиков в Android .  .  .  .  .  .  .  .  .  .  .  .  .  . .104
Архитектура поставщиков содержимого .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .110
Намерения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
Намерения, имеющиеся в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .137
Намерения и универсальные идентификаторы ресурсов данных .  .  .  . .139
Обобщенные действия .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .140
Использование дополнительной информации .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .141
Использование компонентов для непосредственного
инициирования явления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Лучшие методы разработки компонентов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .144
Категории намерений .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .145
Правила разложения намерений на их компоненты . . . . . . . . . . . . . .148
Выполнение ACTION_PICK .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .148
Выполнение действия GET_CONTENT .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .151
Дополнительные ресурсы для углубленного изучения материала
данной главы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .152
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153
Глава 4. Создание пользовательских интерфейсов
и использование элементов управления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .154
Разработка пользовательских интерфейсов в Android . . . . . . . . . . . . . . . . . . .154
Обычные элементы управления в Android . . . . . . . . . . . . . . . . . . . . . . . . . . .161
Текстовые элементы управления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .161
Элементы управления кнопки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165
Элементы управления списки .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .171
Элементы управления таблицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175
Элементы управления датой и временем . . . . . . . . . . . . . . . . . . . . . .177
Другие интересные элементы управления, имеющиеся в Android .  .  .  .  .  .  .  .  . .179
Элемент управления MapView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
Элемент управления галерея .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .180
Элемент управления счетчик .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .180
Диспетчеры шаблонов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .181
Диспетчер шаблонов LinearLayout . . . . . . . . . . . . . . . . . . . . . . . . . . .181
Диспетчер шаблонов TableLayout .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .185
Диспетчер шаблонов RelativeLayout .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .190
Диспетчер шаблонов FrameLayout . . . . . . . . . . . . . . . . . . . . . . . . . . .191
Настройка расположения элементов для различных
конфигураций устройств .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .194
Адаптеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Знакомство с SimpleCursorAdapter .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .197
Знакомство с ArrayAdapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
Создание пользовательских адаптеров .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .199
Отладка и оптимизация шаблонов при помощи инструмента
просмотра иерархии .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . 200
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
Глава 5. Работа с меню и диалоговыми окнами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .203
Меню в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .203
Создание меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
Работа с группами меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206
Отклик на элементы меню .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .207
Создание средства для тестирования меню . . . . . . . . . . . . . . . . . . . .209
Работа с меню других типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
Расширенные меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
Работа с пиктографическими меню . . . . . . . . . . . . . . . . . . . . . . . . . .216
Работа с подменю . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217
Предпосылки для вставки системных меню . . . . . . . . . . . . . . . . . . . .218
Работа с контекстными меню .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .218
Работа с альтернативными меню .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .222
Работа с меню при изменении данных . . . . . . . . . . . . . . . . . . . . . . . .225
Загрузка меню при помощи XML-файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . .226
Структура XML-файла ресурсов, относящегося к меню . . . . . . . . . . . .226
Наполнение XML-файлов ресурсов, относящихся к меню . . . . . . . . . .227
Отклик на элементы меню, работающие на базе XML .  .  .  .  .  .  .  .  .  .  .  . .228
Краткое описание дополнительных XML-тегов, используемых
при работе с меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
Использование диалоговых окон в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .230
Создание диалоговых окон с предупреждениями . . . . . . . . . . . . . . . .231
Создание диалоговых окон с подсказками . . . . . . . . . . . . . . . . . . . . .234
Сущность диалоговых окон в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .239
Переработка диалогового окна с подсказкой . . . . . . . . . . . . . . . . . . .239
Работа с управляемыми диалоговыми окнами . . . . . . . . . . . . . . . . . . . . . . . .240
Протокол управляемых диалоговых окон .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .240
Преобразование неуправляемого диалогового окна в управляемое . . .241
Упрощение протокола управляемых диалоговых окон . . . . . . . . . . . .243
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Глава 6. 2D-анимация: премьера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
Покадровая анимация .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .253
Планирование покадровой анимации .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .253
Создание явления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
Анимирование явления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
Анимация шаблонов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259
Основные типы анимации с построением промежуточных кадров .  .  . .260
Подготовка тестовой программы для испытания анимации шаблона . .261
Создание явления и ListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262
Анимирование ListView .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .264
Работа с интерполяторами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .268
Анимация видов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270
Общие сведения об анимации видов . . . . . . . . . . . . . . . . . . . . . . . . .270
Добавление анимации .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .273
Использование класса Camera для создания эффекта глубины
изображения в 2D .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .277
Изучение класса AnimationListener .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .278
Несколько замечаний о матрицах преобразований .  .  .  .  .  .  .  .  .  .  .  .  .  . .279
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
Глава 7. Изучение вопросов безопасности и служб, основанных
на местоположении . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .281
Модель обеспечения безопасности в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .281
Oбзор концепций, связанных с безопасностью .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .282
Подписывание приложений для развертывания .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .282
Проверка безопасности системы во время исполнения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .287
Безопасность на границе процессов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .288
Определение и использование прав доступа . . . . . . . . . . . . . . . . . . .288
Специальные права доступа .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .290
Права доступа к URI и работа с ними .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .296
Работа со службами, основанными на местоположении . . . . . . . . . . . . . . . . .297
Пакет Mapping .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .297
Пакет Location .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .310
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
Глава 8. Создание и использование служб .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .330
Использование HTTP-служб .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .330
Использование HttpClient для создания запросов HTTP GET . . . . . . . .331
Использование HttpClient для создания запросов HTTP POST . . . . . . .333
Работа с исключениями .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .336
Решение задач, связанных с многопоточностью .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .339
Обеспечение межпроцессного обмена информацией . . . . . . . . . . . . . . . . . . .343
Создание простой службы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343
Службы в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .344
Локальные службы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .346
Службы AIDL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .350
Описание служебного интерфейса на AIDL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .350
Внедрение AIDL-интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .353
Вызов службы из клиентского приложения .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .355
Передача комплексных типов службам .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .359
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .369
Глава 9. Использование медиафреймворка и интерфейсов API
для функций телефонии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
Использование медийных API-интерфейсов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .370
Карты памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .371
Воспроизведение аудио .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .374
Метод setDataSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .378
Воспроизведение видео .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .380
Характерные особенности MediaPlayer . . . . . . . . . . . . . . . . . . . . . . . .382
Изучение аудиозаписи .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .383
Изучение видеозаписи .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .388
Изучение класса MediaStore .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .393
Добавление медийного контента в MediaStore . . . . . . . . . . . . . . . . . .398
Использование API, обеспечивающих выполнение функций телефонии .  .  .  . .400
Работа с SMS .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .400
Работа с диспетчером телефонии . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .409
Глава 10. Программирование трехмерной графики
при помощи OpenGL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .410
История и основы OpenGL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .411
OpenGL ES .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .412
OpenGL ES и Java ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413
M3G — еще один стандарт трехмерной графики,
применяемый в Java ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .413
Основы OpenGL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .414
Важнейшие приемы рисования при помощи OpenGL ES . . . . . . . . . . .415
Камера и координаты в OpenGL .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .421
Взаимодействие OpenGL ES и Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .425
Использование GLSurfaceView и связанных классов . . . . . . . . . . . . . .426
Простая тестовая программа, при помощи которой рисуется
треугольник . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .428
Изменение настроек камеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .431
Использование индексов для добавления еще одного
треугольника . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
Анимирование простого треугольника с применением OpenGL . . . . . .435
Бросаем вызов OpenGL: контуры и текстуры . . . . . . . . . . . . . . . . . . . . . . . . .438
Простой прием работы с меню для демопримеров . . . . . . . . . . . . . . .439
Рисование прямоугольника . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .445
Работа с контурами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447
Работа с текстурами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .460
Рисование нескольких фигур .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .466
Ресурсы по OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .471
Глава 11. Управление настройками и их организация .  .  .  .  .  .  .  .  .  .  .  .  .  . .472
Исследование фреймворка настроек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .472
ListPreference .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .472
Управление настройками при помощи программирования . . . . . . . . .481
CheckBoxPreference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .481
EditTextPreference .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .484
RingtonePreference .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .485
Организация настроек .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .487
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .490
Глава 12. Изучение живых каталогов . . . . . . . . . . . . . . . . . . . . . . . . . . . . .491
Изучение живых каталогов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .491
Живые каталоги с точки зрения пользователя . . . . . . . . . . . . . . . . . .492
Создание живого каталога .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .496
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507
Глава 13. Виджеты основного экрана . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508
Архитектура виджетов основного экрана .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .509
Что такое виджеты главного экрана .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .509
Как пользователь воспринимает виджеты основного экрана .  .  .  .  .  .  . .509
Конфигуратор виджетов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .511
Жизненный цикл виджета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .512
Пример приложения, работающего с виджетами . . . . . . . . . . . . . . . . . . . . . .519
Определение поставщика виджета .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .520
Определение размера виджета . . . . . . . . . . . . . . . . . . . . . . . . . . . . .521
Файлы, относящиеся к шаблону виджета .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .522
Реализация поставщика виджетов .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .524
Реализация моделей виджетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .527
Реализация явления для конфигурации виджетов . . . . . . . . . . . . . . .535
Ограничения и дополнения, связанные с виджетами .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .539
Ресурсы .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .540
Резюме . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .540
Глава 14. Поиск в Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .541
Опыт поиска в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .542
Исследование глобального поиска в Android .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .542
Включение поставщиков поиска для глобального использования .  .  . .546
Взаимодействие поставщиков поиска и поля быстрого поиска (QSB) .  . .549
Взаимодействие явлений и поисковых клавиш .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .550
Работа поисковой клавиши с обычным явлением . . . . . . . . . . . . . . . .551
Работа с явлением, в котором отключена функция поиска .  .  .  .  .  .  .  . .559
Инициирование поиска через меню . . . . . . . . . . . . . . . . . . . . . . . . . .560
Локальный поиск и связанные с ним явления .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .563
Включение функции Type-to-Search . . . . . . . . . . . . . . . . . . . . . . . . . .567
Реализация простого поставщика поиска .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .568
Планирование простого поставщика поиска .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .569
Файлы для реализации простого поставщика поиска . . . . . . . . . . . . .569
Реализация класса SimpleSuggestionProvider .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .570
Объявление поставщика поиска в файле описания .  .  .  .  .  .  .  .  .  .  .  .  .  . .572
Понятие о поисковом явлении простого поставщика поиска .  .  .  .  .  .  . .573
Явление инициирования поиска (search invoker) .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . .578
Опыт работы пользователей с простым поставщиком поиска . . . . . . .579
Реализация пользовательского поставщика поиска . . . . . . . . . . . . . . . . . . . .582
Планирование пользовательского поставщика поис