Tizen је оперативни систем отвореног кода заснован на Линуксу, који развијају 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 Foundation. Прво комерцијално издање Tizen 1.0 објављено је 2012. године. Систем се заснива на Линукс језгру и користи сопствену архитектуру оквира за различите типове уређаја: 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 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.3 | 2014 | Паметни телефони | Прво комерцијално издање на Samsung Z |
| 3.0 | 2017 | Паметни телефони, сатови | Vulkan, 64-бит, Galaxy Watch |
| 4.0 | 2018 | Сатови, ТВ, IoT | AI оквири, Tizen TV 2019 |
| 5.5 | 2020 | ТВ, IoT | AVPlay 2.0, WebAssembly, побољшани WebGL |
| 6.0 | 2022 | ТВ, IoT | ML закључивање, Matter протокол |
Архитектура Tizen-а је изграђена на модуларном принципу са вишеслојном структуром. Најнижи слој је Линукс језгро са закрпама за енергетску ефикасност и задатке у реалном времену (RT_PREEMPT за ТВ и аудио). Изнад језгра налази се слој апстракције хардвера (HAL), који пружа унифициран приступ драјверима камере, сензора, Bluetooth-а, Wi-Fi-ја, NFC-а и дисплеја (преко DirectFB-а или Wayland-а).
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 (препознавање активности корисника: ходање, трчање, спавање).
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-а се компајлирају у извршну датотеку формата .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. UI се гради преко EFL-а (Edje + Elementary) за прозорске апликације или DALi-ја за 3D графику.
// Нативна апликација 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. ui_app_main је улазна тачка Tizen-а која прихвата колбеке животног циклуса. efl_add креира UI објекте кроз хијерархију Win → Conformant → Label. EFL UI је заснован на Edje композитном моделу — описи тема се пишу у .edc датотекама и компајлирају у .edj.
Датотека 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 апликације упаковане у формат .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) секција ограничава изворе скрипти.
// 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 која ограничава учитавање садржаја само из пакета апликације.
// Веб апликација 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 има јединствене UI карактеристике: округли екран (360×360 пиксела на Galaxy Watch-у), физички безел (rotary bezel) за навигацију и три хардверска дугмета: Home, Back и Custom. Програмер мора да прилагоди интерфејс округлом подручју — угаони елементи могу бити одсечени. Circle UI је Samsung-ова библиотека са готовим компонентама за округле екране.
Rotary Bezel — физички прстен око екрана Galaxy Watch-а који се окреће за навигацију кроз листе, подешавање јачине звука и зумирање. У Tizen-у, догађај ротације се обрађује кроз rotarydetector или edje сигнал EFL-а. Сваки зарез безела генерише догађај са углом ротације (0-360 степени). Веб апликације обрађују безел кроз rotarydetector API: tizen.rotarydetector.
// Обрада 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() се одјављује и зауставља детектор ради спречавања цурења меморије.
Интерфејс Tizen Watch-а користи компоненте: RotarySelector (кружна листа контролисана безедом), CircularList (листа са кружним скроловањем), RadialMenu (радијални мени са иконицама по кругу), EdgePanel (панел који извлачи са ивице екрана), CircleProgressBar (кружни индикатор напретка). Све компоненте су оптимизоване за резолуцију 360×360 и узимају у обзир одсуство углова екрана. Минимална величина touch циљева је 48 пиксела.
Tizen TV — платформа за Samsung Smart TV са сопственим SDK-ом и емулатором. Апликације за ТВ се деле на два типа: веб апликације (HTML5/JS) и нативне апликације (C/C++). Веб апликације за ТВ се брже и лакше развијају, али нативне пружају боље перформансе за видео и игре. Tizen TV користи даљински управљач са D-pad-ом за навигацију.
AVPlay API — кључни Tizen TV API за репродукцију видеа. Подржава формате H.264, H.265 (HEVC), VP9, AV1. Резолуција до 8K на ТВ-овима 2024+. AVPlay API обезбеђује хардверско декодирање, HDR10+, Dolby Atmos, титлове и више аудио трака. Контрола преко play(), pause(), stop(), seekTo(position), setDisplayRect(). Стреам може бити локална датотека или HLS/DASH URL.
// Видео плејер за 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);
// Подешавање приказа на цео екран ТВ-а
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 поставља област рендеровања — на ТВ-у је обично цео екран на 3840×2160. prepareAsync је асинхрона припрема са колбецима. AVPlay подржава адаптивни битрејт кроз ADAPTIVE_INFO и титлове кроз SUBTITLE својство.
Samsung Galaxy Store — званична продавница апликација за Tizen (сатови, ТВ, IoT). Регистрација програмера је бесплатна кроз програм Samsung Developers. Програмер отпрема апликацију у формату .tpk (нативна) или .wgt (веб), потписану Samsung сертификатом. Модерација траје 2-5 радних дана. Galaxy Store је доступан у 190 земаља.
Tizen захтева дигитални потпис апликације Samsung сертификатом. Процес: генерисање Ауторског сертификата кроз Samsung Certificate Manager, креирање Дистрибутерског сертификата за продавницу, потписивање пакета кроз Tizen Studio (Build Signed Package). Сертификат се везује за налог програмера. Без потписа, апликација се инсталира само на dev уређајима са укљученим Developer Mode-ом.
Galaxy Store подржава плаћене апликације (провизија 30% на првих 10.000 $, затим 25%), претплате (25%), оглашавање кроз Samsung Ads и куповине у апликацији кроз Samsung IAP. За ТВ апликације доступан је модел Smart TV Premium Channels. Минимална цена је 0,99 $. Исплате се врше месечно при достизању прага од 100 $.
| Захтев | Нативна (.tpk) | Веб (.wgt) |
|---|---|---|
| Језик | C/C++ | HTML5, CSS, JS |
| UI оквир | EFL, DALi, Tizen Circle UI | Circle UI (JS) |
| Приступ API-ју | Потпуни системски | Device API |
| Перформансе | Максималне | Ниже (Web Runtime) |
| Величина пакета | До 100 MB | До 10 MB |
| Почетни шаблон | Tizen Native App | Tizen Web App |
Често постављана питања
Нативне апликације се пишу у C/C++ коришћењем EFL-а или DALi-ја за UI. Веб апликације користе HTML5, CSS и JavaScript са Tizen Device API-јем. За Tizen TV доступан је развој на .NET-у (C#) кроз Tizen .NET. Samsung препоручује C++ за апликације високих перформанси и JavaScript за једноставне интерфејсе.
Tizen користи сопствени C/C++ оквир оптимизован за Samsung хардвер. Wear OS се заснива на Android-у са Kotlin/Java. Tizen троши 30% мање енергије на истом хардверу, али има мање апликација у продавници. Од 2021. Samsung је прешао на Wear OS на новим сатовима, али Tizen се и даље подржава.
Веб апликација за Tizen TV се креира у HTML5/JavaScript-у са Tizen Device API-јем. Развој се води у Tizen Studio-у са ТВ емулатором. Апликација се пакује у .wgt пакет. Кључни API-ји: AVPlay (видео), TVInfoDevice (карактеристике ТВ-а), TVInputDevice (даљински управљач), WebAudio (звук). Навигација кроз D-pad даљинског управљача.
Rotary Bezel — физички ротирајући прстен око екрана Galaxy Watch-а за навигацију. Догађаји се обрађују кроз tizen.rotarydetector API. Сваки зарез генерише догађај са углом ротације и смером (cw/ccw). Rotary Bezel се користи за скроловање листи, подешавање јачине звука, зум и навигацију по менију.
Објављивање кроз Samsung Galaxy Store. Регистрација програмера је бесплатна. Апликација (формат .tpk или .wgt) се потписује Samsung сертификатом. Модерација 2-5 дана. Провизија 30% на првих 10.000 $ прихода, затим 25%. Минимална цена 0,99 $. Месечне исплате од 100 $.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође