Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Разработка нативных приложений Tizen

Покупка
Новинка
Артикул: 835160.01.99
Доступ онлайн
1 000 ₽
В корзину
Курс посвящен вопросам разработки приложений на языке C/C++ под управлением ОС Tizen. Курс предназначен для желающих изучить основные принципы разработки высокопроизводительных мобильных приложений, работающих под управлением ОС Tizen. В курсе слушатели познакомятся с принципами управления нативными приложениями Tizen, изучат такие темы, как локализация дат и часовых поясов. Рассматриваются также: извлечение информации с помощью SQL, разработка картографических сервисов, работа с мультимедиа, работа с сенсорами, телефония, работа с симкартами, доступ к сетям сотовой связи, работа с модемом, Bluetooth, NFC, Wi-Fi.
Богданов, М. Р. Разработка нативных приложений Tizen : краткий курс / М. Р. Богданов. - Москва : ИНТУИТ, 2016. - 317 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2157797 (дата обращения: 08.09.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Разработка нативных приложений 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

Доступ онлайн
1 000 ₽
В корзину