Разработка нативных приложений Tizen
Покупка
Новинка
Тематика:
Программы-оболочки
Издательство:
ИНТУИТ
Автор:
Богданов Марат Робертович
Год издания: 2016
Кол-во страниц: 317
Дополнительно
Курс посвящен вопросам разработки приложений на языке C/C++ под управлением ОС Tizen.
Курс предназначен для желающих изучить основные принципы разработки высокопроизводительных мобильных приложений, работающих под управлением ОС Tizen. В курсе слушатели познакомятся с принципами управления нативными приложениями Tizen, изучат такие темы, как локализация дат и часовых поясов. Рассматриваются также: извлечение информации с помощью SQL, разработка картографических сервисов, работа с мультимедиа, работа с сенсорами, телефония, работа с симкартами, доступ к сетям сотовой связи, работа с модемом, Bluetooth, NFC, Wi-Fi.
Тематика:
ББК:
УДК:
ОКСО:
- 00.00.00: ОБЩИЕ ДИСЦИПЛИНЫ ДЛЯ ВСЕХ СПЕЦИАЛЬНОСТЕЙ
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.03: Прикладная информатика
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Разработка нативных приложений Tizen 2-е издание, исправленное Богданов М.Р. Национальный Открытый Университет “ИНТУИТ” 2016 2
Разработка нативных приложений Tizen/ М.Р. Богданов - М.: Национальный Открытый Университет “ИНТУИТ”, 2016 Курс посвящен вопросам разработки приложений на языке C/C++ под управлением ОС Tizen. Курс предназначен для желающих изучить основные принципы разработки высокопроизводительных мобильных приложений, работающих под управлением ОС Tizen. В курсе слушатели познакомятся с принципами управления нативными приложениями Tizen, изучат такие темы, как локализация дат и часовых поясов. Рассматриваются также: извлечение информации с помощью SQL, разработка картографических сервисов, работа с мультимедиа, работа с сенсорами, телефония, работа с симкартами, доступ к сетям сотовой связи, работа с модемом, Bluetooth, NFC, Wi-Fi. (c) ООО “ИНТУИТ.РУ”, 2015-2016 (c) Богданов М.Р., 2015-2016 3
Введение в EFL Центральным элементом Tizen Native API является EFL, являющаяся сложной библиотекой, интегрирующей множество библиотек. На следующем рисунке показана диаграмма структуры EFL. Верхняя библиотека связана с ее подчиненными библиотеками. Например, библиотека Elementary связана со всеми нижележащими библиотеками, поскольку Ecore связана с Evas, Eet, и Eina. Eina Eina, один из основных элементов EFL — это библиотека структуры данных. По аналогии с библиотекой стандартных шаблонов в C++ (STL), она предоставляет пользователям полезные возможности, такие как alignment, списки, хэш-таблицы, деревья и shared строки. Эти возможности работы со структурами данных позволяют как приложениям, так и всем библиотекам EFL на верхнем уровне библиотеки Eina эффективно организовывать логику вычислений. Eet Eet используется при кодировании и декодировании данных. Можно, например, сохранять данные с произвольной структурой или данные изображений в виде сжатых файлов или передавать их различным компьютерам по сети. Можно, в частности считать сжатый файл и декодировать его позднее. Использование возможностей 4
компрессии Eet, похожих на принцип устройства .zip-файлов позволяет осуществлять мгновенный доступ к данным, расположенным в произвольном месте файла. Если вы используете функцию криптографии, то вы можете хранить данные stably. Evas Evas играет роль холста (canvas). Evas позволяет отображать изображения, текст, различные примитивы, включая квадраты, линии и полигоны в окне. Весь вывод является объектно-ориентированным. Поскольку Evas предоставляет эти объекты в виде объектов типа Evas_Object, вы можете получить доступ к графическим объектам с помощью интерфейса Evas_Object в ходе программирования и отображать нужные объекты на экране. Кроме того, Evas позволяет программировать события. Evast обеспечивает эффективный рендеринг за счет поддержки аппаратного ускорения. Ecore Ecore предоставляет функции, связанные с главным циклом, таймингом, событиями, соединениями, IPC, нитями, оконными системами и так далее. Edje Edje предоставляет функции для создания сложного графического интерфейса пользователя (GUI). Edje использует EDC в качестве скриптового языка. Это позволяет отделять GUI от программного кода при разработке программ. EDC преобразуется в двоичный формат EDJ с помощью компилятора edje_cc. Программа может считывать этот EDJ-файл при компиляции и связывать его с объектом Evas_Object для построения GUI. В силу особенностей Edje мы можем изменять дизайн графического интерфейса пользователя без перекомпиляции проекта. Embryo Embryo — это виртуальная машина байт-кода, используемая для небольших программ, которые могут быть реализованы внутри EDC-файла. В большинстве случаев мы можем кроме того использовать скриптовый язык Embryo небольших практических вычислений. Эта разновидность скрипта Embryo преобразуется в двоичный код PAWN с помощью компилятора PAWN. Emotion Emotion — это библиотека, предназначенная для воспроизведения аудио и видео. Emotion воспроизводит видео, используя другие видео плагины, такие как Gstreamer, Xine, или VLC. Такое воспроизведение видео синхронизируется с объектами Evas, предоставленными пользователями. Соответственно, пользователь может воспроизводить видео и также легко создавать экран, связанный с GUI. 5
Elementary Elementary — это библиотека набора инструментов, предоставляющая такие элементы управления, как кнопки, списки, метки и слайдеры. Кроме того, она позволяет изменять динамические темы и масштабируемость GUI для поддержки технологии Look & Feel’ и различных разрешений экрана. Efreet, Eio, Eeze, Ethumb, and Eldbus Дополнительные библиотеки включают в себя Efreet, Eio, Eeze, Ethumb, и Eldbus. Efreet — это библиотека, предназначенная для разработки приложений по стандартам Freedesktop.org относительно иконок, файлов рабочего стола, меню и так далее. Eio — это библиотека, предназначенная для асинхронного ввода-вывода. Eeze используется для управления аппаратным обеспечением, например, Eeze может помочь определить вставлен ли диск в CD-Rom, какова температура процессора, каков заряд батареи и так далее. Eldbus является оболочкой библиотеки dbus, она используется для работы с сообщениями. Поддерживаемые языки программирования Хотя, в основном EFL поддерживает язык C, в проектах EFL могут использоваться также такие языки как Elev8 (JavaScript), Python, Pearl, C++, и Vala. 6
Разработка простого приложения BasicUI На этом занятии мы создадим простое приложение BasicUI и познакомимся с основными этапами разработки нативных приложений Tizen. Создаем проект HelloWorld File →New→ Tizen Native Project → UI Application → Basic UI Application → HelloWorld. Запустим проект: Project → Build All → Run. 7
Изменим надпись Hello EFL в метке. Для этого нам потребуется открыть исходный код приложения (файл helloworld.c). Мы увидим следующее: #include "helloworld.h" typedef struct appdata { Evas_Object *win; Evas_Object *conform; Evas_Object *label; } appdata_s; static void win_delete_request_cb(void *data, Evas_Object *obj, void *event_info) { ui_app_exit(); } static void win_back_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s *ad = data; /* Let window go to hide state. */ 8
elm_win_lower(ad->win); } Команда #include “helloworld.h” ссылается на файл ‘helloworld.h’ в папке ‘inc’. Обычно, заголовочные файлы содержат различные библиотеки, глобальные переменные, заголовки функций, в то время как в файлах исходного кода содержится содержание функций. ‘appdata_s — это структура, предназначенная для хранения данных, используемых в приложении. ‘win_delete_request_cb() - это функция, которую нельзя вызвать непосредственно. Она срабатывает при запросе на удаление приложения. ‘win_back_cb() - это функция, срабатывающая при нажатии на кнопку Back. Эта функция не запускается непосредственно. static void create_base_gui(appdata_s *ad) { /* Window */ ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE); elm_win_autodel_set(ad->win, EINA_TRUE); if (elm_win_wm_rotation_supported_get(ad->win)) { int rots[4] = { 0, 90, 180, 270 }; elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4); } evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL); eext_object_event_callback_add(ad->win, EEXT_CALLBACK_BACK, win_back_cb, ad); /* Conformant */ ad->conform = elm_conformant_add(ad->win); elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); elm_win_indicator_opacity_set(ad->win, ELM_WIN_INDICATOR_OPAQUE); evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(ad->win, ad->conform); evas_object_show(ad->conform); /* Label*/ ad->label = elm_label_add(ad->conform); elm_object_text_set(ad->label, "<align=center>Hello EFL</align>"); evas_object_size_hint_weight_set(ad->label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_object_content_set(ad->conform, ad->label); /* Show window after base gui is set up */ evas_object_show(ad->win); } Ниже мы объясним некоторые строки из основного кода. 9
elm_win_util_standard_add() - это API, создающий объект Window. Window — это самый верхний объект в макете экрана. Приложение (app) имеет отдельное окно. Тем не менее, более распространенный метод заключается в добавлении контейнера и затем добавлении виджета в верхнюю часть контейнера. elm_win_wm_rotation_available_rotations_set() - это API, определяющий ориентацию экрана. Четыре угла, задающие ориентацию (0, 90, 180, и 270), задаются в виде массива rots. evas_object_smart_callback_add() - это API, определяющий функцию события обратного вызова для смарт-объектов, таких, как виджеты или контейнеры. В качестве первого параметра выступает наблюдаемое событие, второй параметр — это тип события, третий параметр — имя функции обратного вызова, четвертый параметр — данные пользователя. Если тип события “delete,request”, это значит, что объект должен быть удален. eext_object_event_callback_add() - это API, определяющий функцию события обратного вызова для объекта. Можно использовать этот API как для смарт-объектов, так и для обычных объектов. В качестве первого параметра используется объект, в котором происходит событие, второй параметр — тип события, третий параметр — имя функции обратного вызова, четвертый параметр — данные пользователя. EEXT_CALLBACK_BACK сообщает о событии нажатия на кнопку Back. elm_conformant_add() - это API, создающий Conformant (совместимость). Conformant изменяет размер окна при добавлении новых элементов (например, клавиатуры) к экрану. Приложение должно иметь не более одного Conformant. Приложение может и не иметь Conformant. Conformant необходим для отображения индикатора (полосы состояния) в верхней части экрана. elm_win_indicator_mode_set() - это API, который определяет, следует ли отображать индикатор elm_win_indicator_opacity_set() - это API, который определяет прозрачность индикатора evas_object_size_hint_weight_set() - это API, который определяет приблизительные размеры объекта. Ниже приведены параметры, перечисленные в следующем порядке: объект, приблизительные горизонтальные размеры, и приблизительные вертикальные размеры. EVAS_HINT_EXPAND означает максимально возможный размер холста. elm_win_resize_object_add() - это API, который переопределяет размер объекта Window при добавлении к нему другого объекта. evas_object_show() - это API, который отображает объект. При создании объекта значением по умолчанию является Hide (скрыть). 10