27
ПРОЕКТ ПРОГРАММЫ ДИСЦИПЛИНЫ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Новосибирский национальный исследовательский государственный университет" (Новосибирский государственный университет, НГУ) Факультет информационных технологий УТВЕРЖДАЮ _______________________ « ___» _____________ 20___г. РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ ВВЕДЕНИЕ В РАЗРАБОТКУ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ НАПРАВЛЕНИЕ ПОДГОТОВКИ 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА» Квалификация (степень) выпускника Бакалавр Форма обучения очная Разработка подготовлена в рамках реализации Программы развития НИУ НГУ на 2009–2018 гг Новосибирск 2013

M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Embed Size (px)

Citation preview

Page 1: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

ПРОЕКТ ПРОГРАММЫ ДИСЦИПЛИНЫ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего

профессионального образования "Новосибирский национальный исследовательский

государственный университет" (Новосибирский государственный университет,

НГУ)

Факультет информационных технологий

УТВЕРЖДАЮ

_______________________

« ___» _____________ 20___г.

РАБОЧАЯ ПРОГРАММА ДИСЦИПЛИНЫ

ВВЕДЕНИЕ В РАЗРАБОТКУ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ

НАПРАВЛЕНИЕ ПОДГОТОВКИ 230100 «ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ

ТЕХНИКА»

Квалификация (степень) выпускника

Бакалавр

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

Разработка подготовлена в рамках реализации Программы развития НИУ НГУ

на 2009–2018 гг

Новосибирск

2013

Page 2: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Программа дисциплины «Введение в разработку мобильных

приложений» составлена в соответствии с требованиями к обязательному

минимуму содержания и уровню подготовки бакалавра по циклу

«специальных дисциплин» Федеральных государственных образовательных

стандартов высшего профессионального образования по направлению 230100

«Информатика и вычислительная техника».

Автор: Чиркунов Кирилл Сергеевич

Факультет Информационных технологий

Кафедра Систем информатики

Разработка подготовлена в рамках выполнения Программы развития НИУ

НГУ на 2009-2018 гг

Page 3: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

1. Целью дисциплины является подготовка бакалавров, имеющих базис специальных

знаний в области информационных технологий для работы в области мобильной

разработки (основы проектирования и программирования мобильных приложений):

изучение базового устройства платформы Android и возможностей, которые

предоставляет данная платформа для разработки мобильных систем, получение

практических навыков по созданию пользовательских интерфейсов, сервисов, а также

по использованию сигнализации, аппаратных сенсоров и стандартных хранилищ

информации в рамках указанной платформы.

2. Задачами дисциплины являются:

получение представления о жизненном цикле приложений и их структуре,

программном манифесте и внешних ресурсах, основных доступных элементах

пользовательского интерфейса, работе с файлами, базами данных, пользовательскими

настройками, разделяемыми данными и межпрограммном взаимодействии.

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

приложений,

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

отправки/получения SMS, поддержку соединений посредством Wi-Fi/Bluetooth,

исследований возможностей взаимодействия с геолокационными,

картографическими сервисами,

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

уведомлений,

решение практических задач по созданию представлений, программированию

сервисов, фоновых служб.

Дисциплина входит в вариативную часть профессионального цикла (дисциплины по

выбору студента) образовательной программы бакалавриата по направлению 230100

«Информатика и вычислительная техника».

Требования к первоначальному уровню подготовки обучающихся для успешного

освоения дисциплины:

Уровень «знать»:

Объектно-ориентированный анализ и дизайн;

Паттерны объектно-ориентированного программирования;

Page 4: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Проектирование и создание баз данных.

Уровень «уметь»:

Основы программирование приложений на языке Java;

Желательно: разработка пользовательских интерфейсов.

Дисциплины, последующие по учебному плану:

Итоговая государственная аттестация.

Изучение дисциплины направлено на формирование следующих компетенций:

3. Профессиональные компетенции:

способность применять перспективные методы исследования и решение

профессиональных задач на основе знания мировых тенденций развития

вычислительной техники и информационных технологий (ПК-1);

В результате освоения дисциплины студент должен

Иметь представление о

- фундаментальных отличиях в способах разработки и проектирования мобильных

приложений по сравнению с приложениями для настольных систем,

- области потенциальных задач, которые могут быть решены посредством мобильных

приложений,

- основных компонентах, концепциях, терминах, связанных с платформой Андроид,

- рациональной политике использования вычислительных ресурсов устройства и

обеспечении сохранности пользовательских данных.

Знать

- Когда уместно использовать фоновые процессы и сигнализацию, а когда можно

обойтись и обычными программными представлениями,

- Как работает механизм уведомлений,

- Как обеспечить гибкое управление сторонними сервисами в рамках приложения.

- Модель безопасности и основные права на использование системных функций.

Page 5: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Уметь

- Создавать пользовательские интерфейсы, пользоваться программными функциями,

обеспечивающих поддержку телефонии, отправку/получение SMS, управление

подключениями посредством Wi-Fi, Bluetooth, NFC,

- Программно определять конфигурацию сети, использовать доступные аппаратные

сенсоры для прямой/обратной связи через программные интерфейсы,

- Программировать фоновые службы, механизм уведомлений и сигнализации,

- Наладить взаимодействие приложения с геолокационными и картографическими

сервисами.

4. Структура и содержание курса ««Введение в разработку мобильных приложений»»

Общая трудоемкость дисциплины: 5 зачетных единицы, 180 учебных часов.

N

Тема или раздел

С

е

м

е

с

т

р

Недел

я

семес

тра

Вид образовательных занятий

и объем

Формы

контроля

(по

неделям

семестра)

Формы

итоговой

аттестац

ии (по

семестра

м)

Лек

ции

Сем

ина

ры

Лаб

орат

оны

е

Сам

осто

ятел

ьна

я

рабо

та

A Теоретическая часть 5 1-18 32 32 116 Зачет

Экзамен

1 Раздел 1

Технологический и

системный стек. Базовые

модули ОС. Обзор

достоинств и недостатков

ОС Android. Сравнение с

другими мобильными ОС.

Отличия приложений на

Android от веб- и

настольных приложений

Java.

Настройка среды

разработки. Необходимые

5 1-2 4 4 25 Зачет

может

ставиться

по

результат

ам сдачи

практичес

ких задач

1-4

Page 6: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

иннструменты, с которых

требуется начать

знакомство с Android.

История версий и текущая

функциональность.

2 Раздел 2.

Элементы разметки

пользовательских

приложений.

Использование меню.

Элементы управления

пользовательского

интерфейса.

Манифест приложения.

Жизненный цикл формы,

приложения.

Проектирование

интерфейсов для

мобильных устройств и

планшетов.

Проектирование

интерфейсов, не зависящих

от размера экрана.

Фрагменты.

5 3-10 4 4 25 Зачет

может

ставиться

по

результат

ам сдачи

практичес

ких задач

1-4

3 Раздел 3.

Сигнализация. Отложенная

сигнализация.

Картографические

сервисы.

Фоновые службы и

процессы.

Язык AIDL.

Служба компоновки и

создания фрагментов.

Управление камеров.

Управление сенсорами.

Управление сетевыми

соединениями.

Получение информации об

устройстве.

Служба отправки и

получения СМС.

Поддержка протоколов

Bluetooth/Wi-Fi.

Установка шлюза через

Wi-Fi Direct.

Управление анимацией.

Использование NFC.

Служба push-нотификаций.

5 11-15 4 4 25 Зачет

может

ставиться

по

результат

ам сдачи

практичес

ких задач

1-4

Page 7: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Служба уведомлений и

доставки.

Управление потоками и

асинхронными задачами.

4 Раздел 4.

Анимация на основе

ключевых кадров. Техники

программирования,

сохраняющие заряд

батареи.

Энергосберегающие

паттерны

программирования.

Межпроцессное

взаимодействие.

Рекомендации по

написанию мобильных

приложений

5 16-18 4 4 41 Зачет

может

ставиться

по

результат

ам сдачи

практичес

ких задач

1-4

Итого по курсу: 5 32 32 116

5. Образовательные методики и техники

В курсе широко используются актуальные и эффективные техники для более

качественного обучения, социализации:

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

Командная работа,

Удаленные технические консультации и видеоконференции,

Наглядные демонстрации мобильных технологий

Общая доля интерактивных занятий – до 30 %. Общая доля лекций – до 40%.

6. Методическое обеспечение для самоподготовки. Правила оценки заданий и

промежуточной аттестации для студентов.

# Виды самоподготовки Часть курса Рекомендации по

выполнению и

правила оценки

Методологическ

ое обеспечение

1. Решить 4 задачи и

продемонстрировать

код.

Практические

задачи 1-4

Практические

задачи

принимаются в

течение 2-3 недель

с момента, как

были заданы (срок

зависит от степени

сложности задания)

См. Раздел 6.1

Page 8: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

4. Подготовка к вопросам

по теоретическим

разделам курса

Теоретическая

часть, разделы

1-5

Выполняют все

студенты. Лектор

выборочно задает

вопросы на

теоретических

занятиях

(длительность

опроса – не более 5

минут до начала

лекции)

См. раздел 6.2 и

7

5. Подготовка к экзамену Теоретическая

часть, разделы

1-5

Итоговая

аттестация в форме

экзамена.

Приблизительно 3

дня на подготовку

См. разделы 6.2

и 7

6.1. Список практических задач

1. «Записная книжка»

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

поддерживающее создание/редактирование/удаление/поиск заметок.

Два варианта хранения заметок:

А) В базе SQLite.

Б) С использованием файловой системы.

2. «Карманный навигатор»

Создайте приложение с графическим пользовательским интерфейсом с функциями:

- Определение местоположения пользователя на карте Google Map.

- Определение скорости и направления движения пользователя.

- Масштабирование карты.

Программа должна быть конфигурируемой.

Настройки:

- Режим определения местоположения: через GPS либо по сотам.

- Включение/отключение режима поиска.

3. «Песочные часы»

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

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

Page 9: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

перевернуть экран мобильного устройства вверх ногами. Используйте анимацию для

показа «перетекающего песка» и переворота песочных часов.

Для задания времени перетекания песка требуется разработать push-notification

сервер. Через форму ввода на сервере можно отправлять на клиент (приложение-

таймер) указанное время (числовой ввод).

4. Программа для обмена мгновенными сообщениями.

Требуется разработать приложение для обмена мгновенными сообщениями через Wi-

Fi/Bluetooth.

Поддерживаемые режимы:

1. Активный режим. Приложение занимает весь экран, содержит поля для отправки

сообщений и список принятых сообщений.

2. Режим уведомлений. Приложение через уведомления показывает принятые

сообщения.

6.2. Список контрольных вопросов:

1. Программный стек Android. Виртуальная машина Dalvik.

2. Архитектура Android-приложений.

3. Четыре пункта философии разработки приложений под Android.

4. Приемы для улучшения производительности и уменьшения потребления памяти

для приложений Android.

5. Основные составляющие манифеста приложения.

6. Жизненный цикл мобильного приложения.

7. Разработка интерфейсов, не зависящих от разрешения и плотности пикселов.

8. Intents и Activities. Принципы работы Intent-фильтров.

9. Адаптеры и привязка данных.

10. Работа с интернет-ресурсами.

11. Диалоговые окна: создание и использование.

12. Курсоры, Content Values. Получение данных из SQLite.

13. Фоновые службы, toast-уведомления и сигнализация.

14. Геолокационные и картографические сервисы: конфигурирование и

использование.

15. Сенсорные датчики. Sensor manager.

Page 10: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

16. Анимация и спецэффекты.

17. Акселерометр, датчик ориентации и компас: регулировка и программные

функции.

18. Межпроцессное взаимодействие. Язык AIDL.

19. Основные права и полномочия для запуска приложений на устройстве.

20. Работа с настройками сотовой сети, подключение голосовых услуг, получение и

отправка коротких сообщений.

7. Информационное и методологическое обеспечение курса

а) Основная литература:

1) Mayer R. Professional Android 4 Application Development. – Willeyand Sons, 2012.

2) Komatineni S., MacLean D. Pro Android 4. – Apress, 2012.

3) IEEE Standards Association, http://standards.ieee.org .

б) дополнительная литература:

1) Gamma E., Helm R., Johnson R., Vlissides J. Design Patterns: Elements of Reusable

Object-Oriented Software. – Addison-Wesley, 1994.

2) Krum C. Mobile Marketing: Finding your customers No Matter Where They Are. –

Pearson Education, 2010.

в) программное обеспечение и веб-ресурсы:

Android developers online portal, http://developer.android.com.

Channel 9 at MSDN, http://channel9.msdn.com .

Unity3D Documentation, Tutorials and Training, http://unity3d.com/learn/ .

Open handset alliance, http://www.openhandsetalliance.com/ .

Online support for Android and WP8, http://stackoverflow.com .

Official Google developers blog (Android section),

http://googleblog.blogspot.com/search/label/Android .

Windows Phone Developer Blog, http://blogs.windows.com/windows_phone/b/wpdev/ .

Gamasutra: The Art & Business for making games, http://www.gamasutra.com/ .

Page 11: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Moden UI design priciples and guidelines, http://msdn.microsoft.com/en-

us/library/windows/apps/hh779072.aspx.

Android SDK 4.0-4.2 (API 14-17);

Android NDK;

Eclipse For Mobile Developers (Juno or later version, JDT + WST Plug-in);

8. Материально-техническое обеспечение дисциплины

Для проведения лекций: аудитория с мультимедийным проектором и точкой доступа в

Интернет

Для проведения семинаров: терминальный класс с компьютерами, удовлетворяющих

следующим системным требованиям:

ОС Windows XP/Vista/7/8/Server 2003/2008, не менее 4 ГБ RAM, не менее 4 ГБ свободного

места на диске, доступ в Интернет.

Рецензент (ы) _________________________

Программа одобрена на заседании _______________________________

(Наименование уполномоченного органа вуза (УМК, НМС, Ученый совет)

от 2013 года.

Приложение 1. Пример реализации приложения «Записная книжка» (Todo-List)

Установка необходимых программных инструментов

Инструменты разработчика Android содержат вcе необходимые программы и интерфейсы

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

курса. Поскольку приложения для Android запускаются на виртуальной машине Dalvik,

можно писать программы на любой операционной (из нижеперечисленных):

• Microsoft Windows (XP и выше);

• Mac OS X 10.4.8 или выше (только для чипсетов Intel);

• Linux.

Перед началом работы необходимо скачать и установить следующие пакеты:

• SDK Android (инструменты разработчика для Android);

• Java Development Kit (инструменты разработки Java-приложений) (JDK) версии 5, 6 или

выше.

Page 12: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Последнюю версию JDK располагается на сайте компании Sun по адресу

http://java.sun.com/javase/downloads/index.jsp.

Примечание: для создания программ недостаточно иметь установленную среду Java

Runtime Environment (JRE).

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

адресу http://developer.android.com/sdk/index.html.

SDK представляет собой ZIP- или EXE- файл, который содержит самую последнюю

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

определенную папку.

Прежде чем начать работу, необходимо установить по меньшей мере одну платформу

SDK. Для этого в среде Windows необходимо запустить файл SDK Setup.exe; на MacOS

или Linux — исполняемый файл android, который расположен в подпапке tools. В

появившемся окне следует выбрать слева пункт Available Packages, после чего справа в

области Sources, Packages and Archives (см. рисунок 1).

Рисунок 1. Окно SDK Manager

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

Требуется отметить пакеты платформы SDK, которые будут установлены. Выбранные

файлы скачаются в папку установки SDK и будут включать библиотеки API,

документацию и несколько примеров приложений.

Page 13: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Все задания в учебном курсе рассчитаны на работу со средой разработки Eclipse с

интегрированным в нее плагином ADT (Инструмент разработки для Android). Тем не

менее, это необязательное требование — разрабатывать программы можно и в Idea IDE, и

в Android Developer Studio, и даже в текстовом редакторе (при определенной сноровке)!

Разработка в среде Eclipse

Eclipse — это среда разработки с открытыми исходными кодами, которая, как правило,

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

адресу www.eclipse.org/downloads/ и установить на любой платформе, поддерживаемой

Android (Windows, MacOS и Linux).

Есть множество версий Eclipse, однако для Android рекомендуется конфигурация Eclipse

Juno for Mobile Developers (http://www.eclipse.org/downloads/packages/eclipse-mobile-

developers/junosr2):

• плагин Eclipse JDT;

• WST.

WST и плагин JDT входят в состав большинства версий Eclipse.

Чтобы установить Eclipse, распакуйте скачанный архив в новую папку запустите

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

проектов.

Работа с плагином для Eclipse

ADT-плагин упрощает разработку приложений для Android путем интеграции

инструментов разработчика, включая эмулятор и конвертор файлов из формата .class в

формат .dex непосредственно в среду Eclipse. Хотя плагин ADT необязателен, он

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

Плагин добавляет в среду Eclipse следующие модули:

• мастер проектов Android, который помогает создавать новые проекты и включает

стандартный шаблон приложения;

• основанный на формах манифест, шаблон и редактор ресурсов, которые помогают

создавать, редактировать и проверять XML-ресурсы проекта;

• автоматическое построение проектов для Android, конвертацию исходных кодов в

исполняемые файлы (.dex), упаковку в файлы пакетов (.apk) и установку пакетов в

виртуальные машины Dalvik;

• менеджер виртуальных устройств Android, позволяющий создавать и управлять

эмуляторами с виртуальными устройствами, на которых имитируется запуск специальных

релизов ОС Android с присутствующими на устройстве ограничениями памяти;

• эмулятор Android с возможностью настройки его интерфейса и изменения установок

сети, а также способностью имитировать входящие звонки и SMS-сообщения;

Page 14: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

• службу мониторинга отладки Dalvik (DDMS) с функцией перенаправления портов,

стеком, кучей и возможностью просмотра потоков, информации о процессах и функцией

снятия скриншотов;

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

перемещаться по дереву папок и передавать файлы;

• функцию отладки на этапе выполнения, благодаря чему можно устанавливать точки

остановки и просматривать стеки вызовов;

• журнал событий Android и ВМ Dalvik, а также выводимый в консоль список сообщений.

Установка ADT-плагина

Установите набор инструментов разработчика следующим образом:

1. В меню Eclipse выполнить команду Help�Install New Software.

2. В появившемся диалоговом окне в поле Work With ввести адрес https://dl-

ssl.google.com/android/eclipse/ и нажать Enter.

3. Eclipse запустит поиск плагина ADT. Все найденные плагины будут отображаться в

поле ниже, как показано на рис. Надо отметить пункт Developer Tools и нажать кнопку

Next.

4. Eclipse начнет скачивать плагин. Следует убедиться, что отмечены оба плагина (Android

DDMS и Android Developer Tools) и нажать Next.

5. Прочитайте и согласитесь с условиями лицензионного соглашения (I accept the terms of

the license agreements), нажмите кнопку Next, а затем Finish. Если плагин ADT окажется

неподписанным, вы увидите соответствующее предупреждение перед продолжением

установки.

6. После окончания установки нужно перезапустить Eclipse и задать некоторые настройки

ADT. Закройте и вновь запустите Eclipse, выберите в меню пункты Window�Preferences

или Eclipse�Preferences, если работаете на платформе MacOS.

7. В области слева выберите пункт Android.

8. Нажмите кнопку Browse и укажите путь к папке, в которую вы распаковали архив со

средой разработки Android, затем нажмите кнопку Apply. В списке снизу появятся

доступные модули среды разработки, как показано на рис. 2.3. Нажмите OK, чтобы

завершить установку.

Примечание: Новую версию среды разработки Android следует разместить в другой

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

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

строить приложения.

Обновление плагина

Page 15: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Поскольку среда разработки Android постоянно совершенствуется, появляются все новые

обновления для плагина ADT. Для проверки обновлений:

1) Выполнить команду Help�Check for Updates;

2) Если будут обнаружены какие-либо обновления для ADT, их список отобразится в

результатах поиска. Требуется выбрать нужные обновления пакетов и нажать Install.

Приложение «Записная книжка»

В этом примере с нуля будет создано приложение «Записная книжка», использующее

стандартные графические элементы, предоставляемые Android. Основная цель данной

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

1. Чтобы создать новый проект в Eclipse, нужно перейти в меню File ->New->Project и

выбрать пункт Android Application Project(как показано на рис. 2).

Рисунок 2. Создание нового проекта Android-приложения.

2. Далее необходимо ввести подробности о проекте в диалоговом окне, которое

появилось на экране (рис. 3). Application name — это имя приложения (будет показываться

пользователю), поле Create Activity позволяет выбрать имя для своей Активности.

Закончив с вводом данных, нажать кнопку два раза кнопку Next, приняв настройки

приложения и тип главной формы по-умолчанию (рисунок 4 и 5). Потом необходимо

выбрать тип Blank Activity для главной формы приложения (рисунок 6). Затем в поле с

именем MainActivity требуется ввести название главной формы (для текущего примера

это «To-do list», рисунок 7). Затем нажать Finish для создания нового проекта.

Page 16: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Рисунок 3. Описание нового проекта приложения Android

Рисунок 4. Настройка нового проекта.

Page 17: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Рисунок 5. Задание иконки для запуска приложения

Рисунок 6. Выбор шаблона главной формы приложения

Page 18: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Рисунок 7. Ввод имени главной формы приложения.

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

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

3.1. Создание происходит через пункт меню Window->Android Virtual Device Manager. В

появившемся диалоге (рисунок 8) нажать кнопку New.

3.2. Введите имя своего устройства и выберите целевые SDK и разрешение экрана.

Сделайте размер SD-карты больше, чем 8 Мбайт: укажите 20 в поле ввода (рис. 9).

4. Создайте отладочную и рабочую конфигурации. Чтобы это сделать, откройте меню

Run->Debug Configurations и Run->Run Configurations, каждый раз указывая проект

Todo_List и выбирая виртуальное устройство, которое было создано в пункте 3. Можно

оставить действие Launch Default Activity или же явно указать, что при запуске должна

загружаться активность ToDoList.

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

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

Android.

Предпочтительный способ для построения пользовательского интерфейса — описание

разметки в виде файлов с ресурсами. Файл main.xml из каталога res/layout содержит

необходимую разметку.

Требуется добавить в файл разметку LinearLayout, EditText и ListBox, как показано в

Page 19: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

листинге 1. Представления элементов управления должны содержать уникальные

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

Рисунок 8. Создание нового виртуального устройства (эмулятора)

Page 20: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Рисунок 9. Создание нового виртуального устройства

Рисунок 10. Разметка главной формы приложения в файле ресурсов main.xml

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

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<EditText

Page 21: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

android:id="@+id/myEditText"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="New To Do Item"

android:visibility="gone"

/>

<ListView

android:id="@+id/myListView"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

Листинг 1. Содержимое main.xml

Далее требуется открыть форму ToDoList из каталога с проектом и переопределить метод

OnCreate следующим образом: сначала загружается пользовательский интерфейс с

помощью метода setContentView, затем идет получение ссылок на элементы ListView и

EditText, используя метод findViewById.

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

myListView = (ListView)findViewById(R.id.myListView);

myEditText = (EditText)findViewById(R.id.myEditText);

}

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

для каждого элемента списка.

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

myListView = (ListView)findViewById(R.id.myListView);

myEditText = (EditText)findViewById(R.id.myEditText);

todoItems = new ArrayList<ToDoItem>();

int resID = R.layout.todolist_item;

aa = new ToDoItemAdapter(this, resID, todoItems);

myListView.setAdapter(aa);

}

Далее нужно дать возможность пользователю заносить в список новые записи. Для этого

создается обработчик OnKeyListener, который отслеживает нажатие центральной клавиши

на манипуляторе d-pad и заносит содержимое EditText в масссив, оповещая об этом объект

адаптера.

Page 22: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

После добавления нового элемента поле ввода очищается.

myEditText.setOnKeyListener(new OnKeyListener() {

public boolean onKey(View v, int keyCode, KeyEvent event)

{

if (event.getAction() == KeyEvent.ACTION_DOWN)

if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {

ToDoItem newItem = new

ToDoItem(myEditText.getText().toString());

toDoDBAdapter.insertTask(newItem);

updateArray();

myEditText.setText("");

aa.notifyDataSetChanged();

cancelAdd();

return true;

}

return false;

}

});

Далее создадим новые внешние ресурсы приложения. Конкретнее – для кнопок

управления удалением и добавлением записей (Add, Remove) и для описания визуальной

темы оформления.

Изображение для кнопок представлено ниже:

Скопируем изображения в каталог res\drawable-mdpi, откроем ресурс string.xml из

каталога res/values и добавим значения для пунктов меню add_new, remove и cancel

(листинг 2).

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

<resources>

<string name="hello">Hello World, TodoList!</string>

<string name="app_name">To-do List DB</string>

<string name="add_new">Add New Item</string>

<string name="remove">Remove Item</string>

<string name="cancel">Cancel</string>

</resources>

Листинг 2.

Далее нужно переписать стандартную тему приложения. Для этого styles.xml нужно

изменить так, как указано в листинге 3.

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

<resources>

<style name="ToDoTheme" parent="@android:style/Theme.Black">

<item name="android:textSize">12sp</item>

</style>

</resources>

Page 23: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Листинг 3

И, наконец, применить тему в главной форме приложения:

<activity android:name=".ToDoList" …

android:theme="@style/ToDoTheme">

Создание нового представления для элемента списка

Для того чтобы создать представление для элемента списка, которое бы имитировало

оформление бумажного блокнота, следует создать новый View, отнаследовав его от

стандартного элемента TextView. В листинге 4 приведен пример реализации.

import android.content.Context;

import android.content.res.Resources;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.widget.TextView;

public class TodoListItemView extends TextView {

private Paint marginPaint;

private Paint linePaint;

private int paperColor;

private float margin;

public TodoListItemView (Context context, AttributeSet ats,

int ds) {

super(context, ats, ds);

init();

}

public TodoListItemView (Context context) {

super(context);

init();

}

public TodoListItemView (Context context, AttributeSet attrs)

{

super(context, attrs);

init();

}

private void init() {

// Get a reference to our resource table.

Resources myResources = getResources();

// Create the paint brushes we will use in the onDraw

method.

marginPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

Page 24: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

marginPaint.setColor(myResources.getColor(R.color.notepad_margin

));

linePaint = new Paint(Paint.ANTI_ALIAS_FLAG);

linePaint.setColor(myResources.getColor(R.color.notepad_lines));

// Get the paper background color and the margin width.

paperColor = myResources.getColor(R.color.notepad_paper);

margin = myResources.getDimension(R.dimen.notepad_margin);

}

@Override

public void onDraw(Canvas canvas) {

// Color as paper

canvas.drawColor(paperColor);

// Draw ruled lines

canvas.drawLine(0, 0, getMeasuredHeight(), 0, linePaint);

canvas.drawLine(0, getMeasuredHeight(),

getMeasuredWidth(), getMeasuredHeight(),

linePaint);

// Draw margin

canvas.drawLine(margin, 0, margin, getMeasuredHeight(),

marginPaint);

// Move the text across from the margin

canvas.save();

canvas.translate(margin, 0);

// Use the TextView to render the text.

super.onDraw(canvas);

canvas.restore();

}

} Листинг 4

Код в листинге 4 закрашивает экран в соответствии с цветом бумаги, затем рисует линии с

некоторым интервалом (линованная бумага). В конце выполняется отрисовка текста с

отступом для имитации «полей».

Далее следует задать ресурсы цветов оформления в файле colors.xml:

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

<resources>

<color name="notepad_paper">#AAFFFF99</color>

<color name="notepad_lines">#FF0000FF</color>

<color name="notepad_margin">#90FF0000</color>

<color name="notepad_text">#AA0000FF</color>

</resources>

Page 25: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

Для создания эффекта «поля страницы» опишем файл dimens.xml с заданным отступом

30dp (30 платформонезависимых пиксела):

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

<resources>

<dimen name="notepad_margin">30dp</dimen>

</resources>

Сохранение записей в таблице SQLite

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

записи в базе данных, а затем считывать их.

Требуется создать класс ToDoDBAdapter для взаимодействия с библиотекой SQLite. Код

приведен в листинге 5.

import java.util.Date;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.util.Log;

public class ToDoDBAdapter {

private static final String DATABASE_NAME = "todoList.db";

private static final String DATABASE_TABLE = "todoItems";

private static final int DATABASE_VERSION = 1;

public static final String KEY_ID = "_id";

public static final String KEY_TASK = "task";

public static final String KEY_CREATION_DATE = "creation_date";

private SQLiteDatabase db;

private final Context context;

private toDoDBOpenHelper dbHelper;

public ToDoDBAdapter(Context _context) {

this.context = _context;

dbHelper = new toDoDBOpenHelper(context, DATABASE_NAME,

null, DATABASE_VERSION);

}

public void close() {

db.close();

}

public void open() throws SQLiteException {

Page 26: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

try {

db = dbHelper.getWritableDatabase();

} catch (SQLiteException ex) {

db = dbHelper.getReadableDatabase();

}

}

// Добавляем новую запись

public long insertTask(ToDoItem _task) {

// Создаем новую строку.

ContentValues newTaskValues = new ContentValues();

// Инициализируем значения для каждого столбца.

newTaskValues.put(KEY_TASK, _task.getTask());

newTaskValues.put(KEY_CREATION_DATE, _task.getCreated().getTime());

// Вставляем строку в базу

return db.insert(DATABASE_TABLE, null, newTaskValues);

}

// Удаляем запись из таблицы по индексу

public boolean removeTask(long _rowIndex) {

return db.delete(DATABASE_TABLE, KEY_ID + "=" + _rowIndex, null) > 0;

}

// Обновляем запись

public boolean updateTask(long _rowIndex, String _task) {

ContentValues newValue = new ContentValues();

newValue.put(KEY_TASK, _task);

return db.update(DATABASE_TABLE, newValue, KEY_ID + "=" + _rowIndex, null) > 0;

}

public Cursor getAllToDoItemsCursor() {

return db.query(DATABASE_TABLE,

new String[] { KEY_ID, KEY_TASK, KEY_CREATION_DATE},

null, null, null, null, null);

}

public Cursor setCursorToToDoItem(long _rowIndex) throws SQLException {

Cursor result = db.query(true, DATABASE_TABLE,

new String[] {KEY_ID, KEY_TASK},

KEY_ID + "=" + _rowIndex, null, null, null,

null, null);

if ((result.getCount() == 0) || !result.moveToFirst()) {

throw new SQLException("No to do items found for row: " + _rowIndex);

}

return result;

}

public ToDoItem getToDoItem(long _rowIndex) throws SQLException {

Cursor cursor = db.query(true, DATABASE_TABLE,

new String[] {KEY_ID, KEY_TASK},

KEY_ID + "=" + _rowIndex, null, null, null,

null, null);

Page 27: M L < ? J @ > :Ю - fit.nsu.rufit.nsu.ru/data_/docs/bak/program/VRMP.pdf · 1. елью дисциплины является подготовка бакалавров, имеющих

if ((cursor.getCount() == 0) || !cursor.moveToFirst()) {

throw new SQLException("No to do item found for row: " + _rowIndex);

}

String task = cursor.getString(cursor.getColumnIndex(KEY_TASK));

long created = cursor.getLong(cursor.getColumnIndex(KEY_CREATION_DATE));

ToDoItem result = new ToDoItem(task, new Date(created));

return result;

}

private static class toDoDBOpenHelper extends SQLiteOpenHelper {

public toDoDBOpenHelper(Context context, String name,

CursorFactory factory, int version) {

super(context, name, factory, version);

}

// Строка запроса на создание базы

private static final String DATABASE_CREATE = "create table " +

DATABASE_TABLE + " (" + KEY_ID + " integer primary key autoincrement, " +

KEY_TASK + " text not null, " + KEY_CREATION_DATE + " long);";

@Override

public void onCreate(SQLiteDatabase _db) {

_db.execSQL(DATABASE_CREATE);

}

@Override

public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) {

Log.w("TaskDBAdapter", "Upgrading from version " +

_oldVersion + " to " +

_newVersion + ", which will destroy all old data");

//удаляем таблицу.

_db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);

// создаем таблицу заново.

onCreate(_db);

}

}

}

Листинг 5