Tizen: същността на разработката за Samsung Watch и Smart TV

Автор: IT Sectr Публикувано: 2026-02-07 Време за четене: 13 мин

Tizen е операционна система с отворен код, базирана на Linux, разработвана от Samsung и Linux Foundation. Използва се в умни часовници Galaxy Watch, телевизори Samsung Smart TV, домакински уреди и IoT устройства. Разработката се води на C/C++ за естествени приложения и на HTML5/JavaScript за уеб приложения. Tizen SDK предоставя емулатор и IDE, базирана на Visual Studio Code. Според Tizen Association, екосистемата включва над 200 милиона устройства.

Основни точки

  • Tizen — операционна система с отворен код на Samsung на ядро Linux за часовници, TV, домакински уреди и IoT
  • C/C++ — основният език за високопроизводителни естествени приложения с пълен достъп до хардуера
  • HTML5/JS — стек за уеб приложения с Tizen Device API и възможност за бързо прототипиране
  • Tizen Studio — SDK с емулатор на часовник и TV, профилировчик и дебъгер, базиран на VS Code
  • Galaxy Store — магазин за приложения на Samsung с модериране, подписи и комисионна 30/25%

Какво е Tizen?

Tizen е операционна система с отворен код, управлявана от Samsung и Linux Foundation. Първото комерсиално издание Tizen 1.0 излиза през 2012 г. Системата се базира на ядрото Linux и използва собствена архитектура от рамки за различни типове устройства: Tizen Mobile (смартфони — проектът е затворен през 2017), Tizen Watch (часовници), Tizen TV (телевизори) и Tizen IoT (умен дом).

От 2021 г. Samsung използва Tizen предимно в носими устройства и телевизори. Всички умни часовници Galaxy Watch преди 2021 г. работеха на Tizen (Galaxy Watch, Watch Active, Watch 3). Започвайки от Galaxy Watch 4, Samsung премина към Wear OS с One UI Watch, но Tizen продължава да се поддържа за съществуващи устройства и телевизори. Според Samsung (Tizen Ecosystem Report, 2025), над 180 милиона телевизора по света имат инсталиран Tizen TV.

Ключова характеристика на Tizen е поддръжката на две парадигми за разработка: естествени приложения (C/C++) с максимална производителност и уеб приложения (HTML5, CSS, JavaScript) за бърза разработка. И двата типа имат достъп до Tizen Device API — обвивки за работа с Bluetooth, NFC, Wi-Fi, сензори, камера и мултимедия.

История на версиите на Tizen

Tizen 2.3 (2014) — първа стабилна версия за смартфони Samsung Z. Tizen 3.0 (2017) — подобрена многозадачност, поддръжка на Vulkan, 64-битова архитектура. Tizen 4.0 (2018) — преработени рамки, поддръжка на AI ускорение на NPU. Tizen 5.5 (2020) — Tizen TV с AVPlay 2.0, WebAssembly, подобрен рендеринг. Tizen 6.0 (2022) — поддръжка на ML инференс на устройството, Matter протокол за IoT.

Версия на TizenГодинаУстройстваКлючово нововъведение
2.32014СмартфониПърво комерсиално издание на Samsung Z
3.02017Смартфони, часовнициVulkan, 64 бита, Galaxy Watch
4.02018Часовници, TV, IoTAI рамки, Tizen TV 2019
5.52020TV, IoTAVPlay 2.0, WebAssembly, подобрен WebGL
6.02022TV, IoTML инференс, Matter протокол

Архитектура на Tizen: ядро Linux и рамки

Архитектурата на Tizen е изградена на модулен принцип с многослойна структура. Най-долният слой е ядрото Linux с пачове за енергийна ефективност и задачи в реално време (RT_PREEMPT за TV и аудио). Над ядрото е слой за абстракция на хардуера (HAL), който предоставя унифициран достъп до драйвери за камера, сензори, Bluetooth, Wi-Fi, NFC и дисплей (чрез DirectFB или Wayland).

Core Framework слой

Core Framework слой включва Application Framework (управление на жизнения цикъл на приложенията), UI Framework (EFL — Enlightenment Foundation Libraries за UI, DALi — 3D двигател за игри и анимации), Multimedia Framework (камера, аудио, видео чрез GStreamer и MediaCodec), Network Framework (Bluetooth, Wi-Fi, NFC, HTTP, WebSocket) и Security Framework (SELinux, Smack, Система за привилегии на Tizen).

Сервизен слой

Сервизният слой предоставя системни услуги: Application Manager (стартиране, спиране, многозадачност), Package Manager (инсталиране/деинсталиране на приложения, формати .tpk и .wgt), Location Manager (GPS, Wi-Fi позициониране, Геоограда), Sensor Manager (акселерометър, жироскоп, барометър, монитор за пулс), Context Manager (разпознаване на активност на потребителя: ходене, бягане, сън).

Device API за уеб приложения

Tizen предоставя Device API — JavaScript интерфейси за уеб приложения, които дават достъп до същите функции като естествените API. API са разделени на модули: Application API, Bluetooth API, Calendar API, Call History API, Contact API, Content API, Data Control API, Download API, Gallery API, Media Controller API, Message API, NFC API, Notification API, Power API, Push API, System Info API, Time API, Web Setting API.

Естествени приложения на Tizen на C/C++

Естествени приложения на Tizen се компилират в изпълним файл във формат .tpk (Tizen Package Kit). Основният език е C++11/14 с компилатор GCC или Clang. Разработката се води в Tizen Studio или Visual Studio Code с разширение Tizen. Естествените приложения имат директен достъп до EFL, DALi, GStreamer и всички системни API без посредници, което гарантира максимална производителност.

Структура на естествено приложение

Естественото приложение включва файл tizen-manifest.xml (аналог на AndroidManifest.xml), една или повече споделени библиотеки (.so) и ресурси (изображения, шрифтове, локализации). Жизненият цикъл се управлява чрез app_event_cb: APP_EVENT_CREATE, APP_EVENT_RESUME, APP_EVENT_PAUSE, APP_EVENT_DESTROY. Потребителският интерфейс се изгражда чрез EFL (Edje + Elementary) за прозоречни приложения или DALi за 3D графика.

cpp
// Естествено приложение на Tizen на C++ с EFL UI
#include <app.h>
#include <efl_extension.h>
#include <dlog.h>

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

static void
win_delete_cb(void *data, Evas_Object *obj, void *event_info) {
    ui_app_exit();
}

static void
create_base_gui(appdata_s *ad) {
    // Създаване на прозорец на Tizen
    ad->win = efl_add(EFL_UI_WIN_CLASS, nullptr,
                      efl_ui_win_typename_set(efl_add(EFL_UI_WIN_CLASS, nullptr), "tizen-hello"));

    // Заглавие на прозореца
    efl_text_set(ad->win, "Hello Tizen");
    efl_event_callback_add(ad->win, EFL_UI_WIN_EVENT_DELETE_REQUEST, win_delete_cb, ad);

    // Conformant — стандартен контейнер на Tizen за носими устройства
    ad->conform = efl_add(EFL_UI_CONFORMANT_CLASS, ad->win);
    efl_content_set(ad->win, ad->conform);
    efl_gfx_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);

    // Текстов етикет
    ad->label = efl_add(EFL_UI_LABEL_CLASS, ad->conform);
    efl_text_set(ad->label, "Добре дошли в Tizen!");
    efl_content_set(ad->conform, ad->label);

    // Показване на прозореца
    efl_gfx_size_hint_weight_set(ad->label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    efl_gfx_size_hint_align_set(ad->label, EVAS_HINT_FILL, EVAS_HINT_FILL);
}

static void
app_get_resource_cb(void *data) {
    // Обработчик за получаване на ресурси на приложението
    appdata_s *ad = (appdata_s *)data;
    create_base_gui(ad);
}

static bool
app_create_cb(void *data) {
    // Извиква се при създаване на приложението
    appdata_s *ad = (appdata_s *)data;
    create_base_gui(ad);
    return true;
}

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

    event_callback.create = app_create_cb;
    return ui_app_main(argc, argv, &event_callback, &ad);
}

Естественото приложение Tizen Hello World използва EFL (Enlightenment Foundation Libraries) за потребителския интерфейс. ui_app_main е входната точка на Tizen, която приема обратни извиквания на жизнения цикъл. efl_add създава UI обекти чрез йерархията Win → Conformant → Label. EFL UI е базиран на композитния модел Edje — описанията на теми се пишат в .edc файлове и се компилират в .edj.

Манифест на Tizen (tizen-manifest.xml)

Файлът tizen-manifest.xml е конфигурацията на естественото приложение. Указва id (уникален идентификатор във формат на обърнат домейн), package (име на пакет), version, label (показвано име), author, description. Привилегиите декларират достъп до API: http://tizen.org/privilege/bluetooth, http://tizen.org/privilege/location, http://tizen.org/privilege/camera. Без посочване на привилегия, извикването на съответния API ще доведе до грешка SECURITY_ERR.

Уеб приложения на Tizen на HTML5 и JavaScript

Уеб приложения на Tizen са HTML5 приложения, опаковани във формат .wgt (W3C Widget). Разработката е идентична със създаването на обикновен уебсайт, но с допълнителен достъп до Tizen Device API чрез глобалния обект tizen. Уеб приложенията работят в собствен процес Web Runtime (WRT), базиран на двигателя WebKit (Tizen 2.x-4.x) или Chromium (Tizen 5.5+).

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

Уеб приложението съдържа index.html (входна точка), config.xml (W3C Widget конфигурация), CSS, JavaScript, изображения. Файлът config.xml е аналогичен на manifest.webapp в KaiOS: задължителните полета включват widget (id, version, height/width за часовници), name, description, author. Разрешенията за Device API се указват чрез елемента tizen:privilege. Секцията CSP (Content Security Policy) ограничава източниците на скриптове.

javascript
// config.xml за уеб приложение Tizen Watch
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets"
        xmlns:tizen="http://tizen.org/ns/widgets"
        id="com.example.heartrate"
        version="1.0.0"
        height="360" width="360">
    <tizen:application id="com.example.heartrate"
                       package="com.example.heartrate"
                       required_version="4.0"/>
    <name>Пульсометр</name>
    <description>Измерение пульса на Galaxy Watch</description>
    <author>Developer</author>
    <tizen:privilege name="http://tizen.org/privilege/healthinfo"/>
    <tizen:privilege name="http://tizen.org/privilege/sensor"/>
    <tizen:profile name="wearable"/>
    <tizen:content-security-policy>
        default-src 'self'; script-src 'self'; style-src 'self'
    </tizen:content-security-policy>
</widget>

Минималният фрагмент на config.xml демонстрира ключови елементи: widget с id и версия, tizen:application с wearable профил за кръгли екрани на часовници, tizen:privilege за healthinfo и sensor API, и Content Security Policy, която ограничава зареждането на съдържание само от пакета на приложението.

javascript
// Уеб приложение Tizen Watch: мониторинг на пулс
const HeartRateMonitor = {
    hrSensor: null,
    isMonitoring: false,

    async init() {
        try {
            // Проверка на поддръжката на HRM сензор
            const sensors = tizen.sensorservice.getAvailableSensors();
            if (!sensors.includes('HRM')) {
                throw new Error('HRM-сенсор не найден');
            }

            // Получаване на достъп до сензора за пулс
            this.hrSensor = tizen.sensorservice.getDefaultSensor('HRM');
            console.log('HRM-сенсор инициализирован');
        } catch (err) {
            console.error('Ошибка инициализации:', err.message);
        }
    },

    startMonitoring() {
        if (!this.hrSensor) return;

        this.isMonitoring = true;
        this.hrSensor.startSensor({
            interval: 1000,  // измерване всяка секунда
            callback: {
                onsuccess: (data) => {
                    const heartRate = data.heartRate;
                    document.getElementById('hr-value').textContent = heartRate;
                    this.updateDisplay(heartRate);
                },
                onerror: (err) => {
                    console.error('Ошибка сенсора:', err.message);
                }
            }
        });
    },

    stopMonitoring() {
        if (this.hrSensor && this.isMonitoring) {
            this.hrSensor.stopSensor();
            this.isMonitoring = false;
        }
    },

    updateDisplay(heartRate) {
        // Визуализация на пулса на кръгъл екран 360x360
        const canvas = document.getElementById('hr-canvas');
        const ctx = canvas.getContext('2d');
        ctx.clearRect(0, 0, 360, 360);

        // Кръгъл индикатор за пулс
        ctx.beginPath();
        ctx.arc(180, 180, 120, 0, 2 * Math.PI);
        ctx.strokeStyle = '#ff4444';
        ctx.lineWidth = 8;
        ctx.stroke();
    }
};

document.addEventListener('DOMContentLoaded', () => {
    HeartRateMonitor.init().then(() => {
        HeartRateMonitor.startMonitoring();
    });
});

Приложението HeartRateMonitor използва Tizen Sensor API за достъп до HRM сензора на Galaxy Watch. tizen.sensorservice.getDefaultSensor('HRM') получава сензора за пулс, startSensor стартира измервания с интервал от 1 секунда. Canvas 360×360 рисува кръгъл индикатор — типична UI парадигма за кръгли екрани на часовници Tizen.

Разработка за Tizen Watch: Circle UI и Rotary

Tizen Watch има уникални UI характеристики: кръгъл екран (360×360 пиксела на Galaxy Watch), физически безел (rotary bezel) за навигация и три хардуерни бутона: Home, Back и Custom. Разработчикът трябва да адаптира интерфейса към кръгла област — ъгловите елементи могат да бъдат отрязани. Circle UI е библиотека на Samsung с готови компоненти за кръгли екрани.

Rotary Bezel

Rotary Bezel — физически пръстен около екрана на Galaxy Watch, който се върти за навигация в списъци, регулиране на силата на звука и мащабиране. В Tizen събитието на завъртане се обработва чрез rotarydetector или edje сигнал на EFL. Всеки прорез на безела генерира събитие с ъгъл на завъртане (0-360 градуса). Уеб приложенията обработват безела чрез rotarydetector API: tizen.rotarydetector.

javascript
// Обработка на Rotary Bezel в Tizen Watch
class RotaryNavigation {
    constructor() {
        this.currentAngle = 0;
        this.sections = document.querySelectorAll('.rotary-section');
        this.currentSection = 0;
        this.init();
    }

    init() {
        // Абониране за събития на въртене на безела
        const detector = tizen.rotarydetector;

        detector.addEventListener('rotarydetector', (event) => {
            // event.angle — текущ ъгъл (0-360)
            // event.direction — 'cw' (по час.) или 'ccw' (обратно на час.)
            this.handleRotation(event);
        });

        // Активиране на rotarydetector
        detector.start();
    }

    handleRotation(event) {
        const delta = event.delta;  // промяна на ъгъл
        this.currentAngle += delta;

        // Определяне на посоката и движението
        if (delta > 0) {
            // Въртене по часовниковата стрелка — следващ елемент
            this.currentSection = Math.min(this.currentSection + 1, this.sections.length - 1);
        } else {
            // Въртене обратно на часовниковата стрелка — предишен елемент
            this.currentSection = Math.max(this.currentSection - 1, 0);
        }

        this.updateUI();
    }

    updateUI() {
        this.sections.forEach((el, i) => {
            el.classList.toggle('active', i === this.currentSection);
            el.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
        });
    }

    destroy() {
        tizen.rotarydetector.removeEventListener('rotarydetector');
        tizen.rotarydetector.stop();
    }
}

// Инициализация при зареждане на приложението
document.addEventListener('tizen-rotary-ready', () => {
    const nav = new RotaryNavigation();
});

Класът RotaryNavigation се абонира за събития на rotarydetector чрез tizen.rotarydetector.addEventListener. При завъртане на безела се изчислява посоката (cw/ccw) и делта на ъгъла. Текущата секция се осветява с клас active. rotarydetector.start() е задължителен — без него не се генерират събития. destroy() се отписва и спира детектора за предотвратяване на изтичане на памет.

UI характеристики за часовници

Интерфейсът на Tizen Watch използва компоненти: RotarySelector (кръгов списък, управляван от безела), CircularList (списък с кръгово скролване), RadialMenu (радиално меню с икони, подредени в кръг), EdgePanel (панел, изплъзващ се от ръба на екрана) и CircleProgressBar (кръгъл индикатор за прогрес). Всички компоненти са оптимизирани за резолюция 360×360 и отчитат липсата на ъгли на екрана. Минималният размер на touch целите е 48 пиксела.

Разработка за Tizen TV: приложения за Smart TV

Tizen TV — платформа за Samsung Smart TV със собствен SDK и емулатор. Приложенията за TV се делят на два типа: уеб приложения (HTML5/JS) и естествени приложения (C/C++). Уеб приложенията за TV се разработват по-бързо и лесно, но естествените осигуряват по-добра производителност за видео и игри. Tizen TV използва дистанционно управление с D-pad за навигация.

AVPlay API за видео

AVPlay API — ключовият API на Tizen TV за възпроизвеждане на видео. Поддържа формати H.264, H.265 (HEVC), VP9, AV1. Резолюция до 8K на TV от 2024+. AVPlay API осигурява хардуерно декодиране, HDR10+, Dolby Atmos, субтитри и множество аудио писти. Управление чрез play(), pause(), stop(), seekTo(position), setDisplayRect(). Потокът може да бъде локален файл или HLS/DASH URL.

javascript
// Видео плейър за Tizen TV с AVPlay API
class TizenVideoPlayer {
    constructor(videoElementId) {
        this.videoElement = document.getElementById(videoElementId);
        this.avplay = null;
        this.isReady = false;
    }

    async init(url) {
        try {
            // Проверка на наличие на AVPlay
            if (typeof webapis === 'undefined' ||
                !webapis.avplay) {
                throw new Error('AVPlay API недоступен');
            }

            this.avplay = webapis.avplay;
            this.avplay.open(url);

            // Настройка на дисплея на цял екран TV
            this.avplay.setDisplayRect(0, 0, 3840, 2160);
            this.avplay.setDisplayMethod(webapis.avplay.AVPLAY_DISPLAY_METHOD_PLAYER);

            // Конфигурация на аудио (Dolby Atmos, ако се поддържа)
            this.avplay.setStreamingProperty('ADAPTIVE_INFO', JSON.stringify({
                width: 3840,
                height: 2160,
                bitrate: 25000000
            }));

            this.avplay.prepareAsync(
                () => {
                    this.isReady = true;
                    console.log('Видео готово к воспроизведению');
                },
                (error) => {
                    console.error('Ошибка подготовки:', error);
                }
            );
        } catch (err) {
            console.error('Ошибка инициализации:', err);
        }
    }

    play() {
        if (this.isReady) this.avplay.play();
    }

    pause() {
        this.avplay.pause();
    }

    seekTo(positionMs) {
        this.avplay.seekTo(positionMs);
    }

    setSubtitle(url, encoding) {
        this.avplay.setStreamingProperty('SUBTITLE', JSON.stringify({
            url: url,
            encoding: encoding || 'UTF-8'
        }));
    }
}

// Използване
const player = new TizenVideoPlayer('video-area');
player.init('https://example.com/stream.m3u8');
player.setSubtitle('https://example.com/subs.vtt', 'UTF-8');

Класът TizenVideoPlayer демонстрира работа с AVPlay API. webapis.avplay.open() отваря медиен поток (локален или HLS/DASH). setDisplayRect задава областта за рендериране — на TV обикновено цял екран при 3840×2160. prepareAsync е асинхронна подготовка с обратни извиквания. AVPlay поддържа адаптивен битрейт чрез ADAPTIVE_INFO и субтитри чрез свойството SUBTITLE.

Galaxy Store и публикуване на приложения

Samsung Galaxy Store — официалният магазин за приложения за Tizen (часовници, TV, IoT). Регистрацията на разработчик е безплатна чрез програмата Samsung Developers. Разработчикът качва приложения във формат .tpk (естествено) или .wgt (уеб), подписани със сертификат на Samsung. Модерирането отнема 2-5 работни дни. Galaxy Store е достъпен в 190 държави.

Подписване на приложение

Tizen изисква цифров подпис на приложението със сертификат на Samsung. Процес: генериране на авторски сертификат чрез Samsung Certificate Manager, създаване на дистрибуторски сертификат за магазина, подписване на пакета чрез Tizen Studio (Build Signed Package). Сертификатът се свързва с акаунта на разработчика. Без подпис приложението може да се инсталира само на dev устройства с включен режим на разработчик.

Модел на монетизация

Galaxy Store поддържа платени приложения (комисионна 30% за първите $10 000, след това 25%), абонаменти (25%), реклама чрез Samsung Ads и покупки в приложението чрез Samsung IAP. За TV приложения е наличен моделът Smart TV Premium Channels. Минималната цена е $0.99. Изплащанията се извършват месечно при достигане на прага от $100.

ИзискванеЕстествено (.tpk)Уеб (.wgt)
ЕзикC/C++HTML5, CSS, JS
UI рамкаEFL, DALi, Tizen Circle UICircle UI (JS)
Достъп до APIПълен системенDevice API
ПроизводителностМаксималнаПо-ниска (Web Runtime)
Размер на пакетДо 100 MBДо 10 MB
Стартов шаблонTizen Native AppTizen Web App

Често задавани въпроси

Какви езици се използват за разработка под Tizen?

Естествените приложения се пишат на C/C++ с използване на EFL или DALi за потребителския интерфейс. Уеб приложенията използват HTML5, CSS и JavaScript с Tizen Device API. За Tizen TV е достъпна разработка на .NET (C#) чрез Tizen .NET. Samsung препоръчва C++ за производителни приложения и JavaScript за прости интерфейси.

Как Tizen се различава от Wear OS?

Tizen използва собствена C/C++ рамка, оптимизирана за хардуера на Samsung. Wear OS се базира на Android с Kotlin/Java. Tizen консумира 30% по-малко енергия на същия хардуер, но има по-малко приложения в магазина. От 2021 г. Samsung премина към Wear OS на новите часовници, но Tizen продължава да се поддържа.

Как да създадем уеб приложение за Tizen TV?

Уеб приложение за Tizen TV се създава на HTML5/JavaScript с Tizen Device API. Разработката се води в Tizen Studio с TV емулатор. Приложението се опакова в .wgt пакет. Ключови API: AVPlay (видео), TVInfoDevice (характеристики на TV), TVInputDevice (дистанционно), WebAudio (звук). Навигация чрез D-pad на дистанционното.

Какво е Rotary Bezel в Tizen?

Rotary Bezel — физически въртящ се пръстен около екрана на Galaxy Watch за навигация. Събитията се обработват чрез tizen.rotarydetector API. Всеки прорез генерира събитие с ъгъл на завъртане и посока (cw/ccw). Rotary Bezel се използва за скролване на списъци, регулиране на силата на звука, мащабиране и навигация в менюто.

Как да публикуваме Tizen приложения?

Публикуване чрез Samsung Galaxy Store. Регистрацията на разработчик е безплатна. Приложението (формат .tpk или .wgt) се подписва със сертификат на Samsung. Модериране 2-5 дни. Комисионна 30% за първите $10 000 приход, след това 25%. Минимална цена $0.99. Месечни изплащания от $100.

Резюме

  • Tizen — операционна система с отворен код на Samsung на ядро Linux за часовници, TV, IoT и домакински уреди с поддръжка за естествени и уеб приложения
  • Естествени приложения (C/C++, EFL/DALi, формат .tpk) осигуряват максимална производителност и пълен достъп до хардуера
  • Уеб приложения (HTML5/JS, формат .wgt, Web Runtime на Chromium) — бърза разработка с Device API
  • Tizen Watch използва кръгъл екран 360×360, Rotary Bezel, Circle UI и компоненти RotarySelector/CircularList
  • Tizen TV използва AVPlay API за хардуерно декодиране на H.264/H.265/VP9 до 8K, HDR10+, Dolby Atmos
  • Galaxy Store — безплатна регистрация, формат .tpk/.wgt, подпис със сертификат Samsung, модериране 2-5 дни
  • Tizen Studio — SDK, базиран на VS Code, с емулатор на часовник и TV, профилировчик и дебъгер

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също