» » Пишем первое приложение для Samsung Smart Watch и OS Tizen

 

Пишем первое приложение для Samsung Smart Watch и OS Tizen

Автор: admin от 16-09-2018, 12:40, посмотрело: 23

Привет хабр!



В недавней публикации описывались первые впечатления от смарт-часов Samsung Galaxy Watch, работающих под ОС Tizen. Следующим шагом стало интересно выяснить, как разрабатывать под эту систему собственные приложения, как на эмуляторе, так и на реальных часах.



Пишем первое приложение для Samsung Smart Watch и OS Tizen


Процесс в целом, оказался несложный (особенно когда программируешь не один год), хотя в нем и есть свои тонкости. Кому интересно продолжение, подробности под катом.



Осторожно траффик, много скриншотов.Tizen Studio, версию выбираем в зависимости от операционной системы. На момент публикации текущей версией является 2.5, ее и будем использовать.



После установки запускается Package Manager, с помощью которого нужно установить требуемые пакеты для разработки. Мы выбираем 3.0 Wearable.



Пишем первое приложение для Samsung Smart Watch и OS Tizen


Как видно из скриншота, версия 4.0 доступна только в виде Preview, но новые возможности мы использовать сейчас все равно не будем, так что 3.0 вполне хватит. Помимо этого, необходимо зайти в раздел Extention SDK, и выбрать там Samsung Certificate Extention. Это важно, т.к. без управления сертификатами загрузить приложение на часы будет невозможно. По умолчанию этот компонент не выбирается, и было потрачено не менее получаса на выяснение, почему выдается ошибка неправильного сертификата.



Шаг 2. Создание проекта



Мы уже установили IDE и почти стали настоящими mobile-программистами теперь мы можем создать новый проект. Запускаем Tizen Studio и выбираем File New Tizen Project. Появляется окно, где можно выбрать Template (шаблон нового проекта) или Samples (предустановленные примеры). Выбираем Template, и в окне нужной платформы выбираем Wearable 3.0.



Пишем первое приложение для Samsung Smart Watch и OS Tizen


Следующий пункт предлагает выбрать, на чем писать — нативное или web-приложение, C++ или HTML5.



Пишем первое приложение для Samsung Smart Watch и OS Tizen


Разумеется, только хардкор, выбираем C++. Следующим шагом можно выбрать тип приложения, которых довольно-таки много. Выбираем Basic UI.

Пишем первое приложение для Samsung Smart Watch и OS Tizen


Остальные пункты не так интересны, нужно выбрать название приложения, иконку и пр. Я выбрал простое название test1, иконка была оставлена по умолчанию. В завершении, визард создает приложение, состоящее из файла test1.c и файла tizen-manifest.xml, хранящего основные настройки приложения.



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

Пишем первое приложение для Samsung Smart Watch и OS Tizen


Теперь приложение можно запустить на эмуляторе часов. Выбираем в меню Tools — Emulator Manager. Появляется окно где можно выбрать и запустить эмулятор.

Пишем первое приложение для Samsung Smart Watch и OS Tizen


Когда эмулятор запущен, запускаем приложение из Tizen Studio. Вряд ли оно попадет в Top-100, но учитывая что мы не написали никакого кода, и так неплохо:

Пишем первое приложение для Samsung Smart Watch и OS Tizen


Шаг 3. Разбираем код



Посмотрим, что сгенерировал нам Tizen Studio.



Структура appdata хранит указатели на основные контролы, используемые в программе. В функции main вызывается системная функция ui_app_main, которая инициализируется всеми основными callback-функциями жизненного цикла программы (app_create, app_pause, app_terminate и пр).



typedef struct appdata {
	Evas_Object *win;
	Evas_Object *conform;
	Evas_Object *label;
} appdata_s;

static bool app_create(void *data) {
	appdata_s *ad = data;
	create_base_gui(ad);
	return true;
}

static void app_pause(void *data) {
}

...

int main(int argc, char *argv[]) {
	appdata_s ad = {0,};
	int ret = 0;

	ui_app_lifecycle_callback_s event_callback = {0,};
	app_event_handler_h handlers[5] = {NULL, };

	event_callback.create = app_create;
	event_callback.terminate = app_terminate;
	event_callback.pause = app_pause;
	event_callback.resume = app_resume;
	event_callback.app_control = app_control;

	ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad);
	ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad);
	...

	ret = ui_app_main(argc, argv, &event_callback, &ad);
	if (ret != APP_ERROR_NONE) {
		dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);
	}

	return ret;
}


Подробнее про жизненный цикл программы на Tizen можно прочитать здесь.



Наконец, доходим до функции, где и создается требуемый нам UI:

[code]static void create_base_gui(appdata_s *ad) {
/* Window */
/* Create and initialize elm_win.
elm_win is mandatory to manipulate window. */
adwin = elm_win_util_standard_add(PACKAGE, PACKAGE);
elm_win_autodel_set(adwin, EINA_TRUE);
if (elm_win_wm_rotation_supported_get(adwin)) {
int rots[4] = { 0, 90, 180, 270 };
elm_win_wm_rotation_available_rotations_set(adwin, (const int *)(&rots), 4);
}

/* Conformant */
/* Create and initialize elm_conformant.
elm_conformant is mandatory for base gui to have proper size
when indicator or virtual keypad is visible. */
adconform = elm_conformant_add(adwin);
elm_win_indicator_mode_set(adwin, ELM_WIN_INDICATOR_SHOW);
elm_win_indicator_opacity_set(adwin, ELM_WIN_INDICATOR_OPAQUE);
evas_object_size_hint_weight_set(adconform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(adwin, adconform);
evas_object_show(adconform);

/* Label */
/* Create an actual view of the base gui.
Modify this part to change the view. */
adlabel = elm_label_add(adconform);
elm_object_text_set(adlabel, "Conformant, управляющий созданием контента переменного размера (размер может меняться, например, при выдвижении клавиатуры). В нашем приложении можно было бы наверно обойтись и без него, т.к. клавиатуру мы не используем, но раз уж есть, пусть будет. Наконец, последним шагом создается объект label. Указатели на все объекты сохраняются в структуре appdata, которую мы рассматривали выше. Наконец, последняя функция evas_object_show показывает созданное окно на экране часов.



На этом можно было бы и закончить, но ведь интересно написать что-то свое. Выведем на экран кнопку, при нажатии которой текст label будет меняться.



Используемая в примере функция elm_object_content_set выводит только один контрол. Но нам надо добавить несколько, поэтому воспользуемся компонентом Box, который в свою очередь будет вставлен в контейнер Naviframe.



Убираем из вышеприведенного кода создание Label и заменяем его на код:

[code] // Naviframe
adnf = elm_naviframe_add(adconform);
evas_object_show(adnf);
elm_naviframe_prev_btn_auto_pushed_set(adnf, EINA_TRUE);
elm_object_content_set(adconform, adnf);

// Box
adbox = elm_box_add(adnf);
evas_object_show(adbox);
elm_naviframe_item_push(adnf, "My app", NULL, NULL, adbox, NULL);

// Label
adlabel = elm_label_add(adbox);
elm_object_text_set(adlabel, "https://developer.tizen.org/ko/development/guides желающие могут изучить ее более подробно.



Интересно и то, что кроме часов есть другие устройства с ОС Tizen, например, телевизоры.

Всем интересующимся желаю удачных экспериментов.

Источник: Хабр / Интересные публикации

Категория: Программирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *