Tizen adalah sistem operasi sumber terbuka berbasis Linux, dikembangkan oleh Samsung dan Linux Foundation. Digunakan di smartwatch Galaxy Watch, TV Samsung Smart TV, peralatan rumah tangga, dan perangkat IoT. Pengembangan dilakukan dalam C/C++ untuk aplikasi native dan HTML5/JavaScript untuk aplikasi web. Tizen SDK menyediakan emulator dan IDE berbasis Visual Studio Code. Menurut Tizen Association, ekosistem ini mencakup lebih dari 200 juta perangkat.
Poin Utama
Tizen adalah sistem operasi sumber terbuka yang diawasi oleh Samsung dan Linux Foundation. Rilis komersial pertama, Tizen 1.0, terjadi pada tahun 2012. Sistem ini didasarkan pada kernel Linux dan menggunakan arsitektur framework sendiri untuk berbagai jenis perangkat: Tizen Mobile (smartphone — proyek ditutup tahun 2017), Tizen Watch (jam tangan), Tizen TV (televisi), dan Tizen IoT (rumah pintar).
Sejak 2021, Samsung menggunakan Tizen terutama di perangkat yang dapat dikenakan dan televisi. Semua smartwatch Galaxy Watch sebelum 2021 berjalan di Tizen (Galaxy Watch, Watch Active, Watch 3). Mulai Galaxy Watch 4, Samsung beralih ke Wear OS dengan One UI Watch, tetapi Tizen terus didukung untuk perangkat dan TV yang ada. Menurut Samsung (Tizen Ecosystem Report, 2025), lebih dari 180 juta TV di seluruh dunia telah menginstal Tizen TV.
Fitur utama Tizen adalah dukungan untuk dua paradigma pengembangan: aplikasi native (C/C++) dengan kinerja maksimal dan aplikasi web (HTML5, CSS, JavaScript) untuk pengembangan cepat. Kedua jenis memiliki akses ke Tizen Device API — pembungkus untuk bekerja dengan Bluetooth, NFC, Wi-Fi, sensor, kamera, dan multimedia.
Tizen 2.3 (2014) — versi stabil pertama untuk smartphone Samsung Z. Tizen 3.0 (2017) — multitasking yang ditingkatkan, dukungan Vulkan, arsitektur 64-bit. Tizen 4.0 (2018) — framework yang dirancang ulang, dukungan akselerasi AI di NPU. Tizen 5.5 (2020) — Tizen TV dengan AVPlay 2.0, WebAssembly, rendering yang ditingkatkan. Tizen 6.0 (2022) — dukungan inferensi ML di perangkat, Protokol Matter untuk IoT.
| Versi Tizen | Tahun | Perangkat | Inovasi Utama |
|---|---|---|---|
| 2.3 | 2014 | Smartphone | Rilis komersial pertama di Samsung Z |
| 3.0 | 2017 | Smartphone, jam tangan | Vulkan, 64-bit, Galaxy Watch |
| 4.0 | 2018 | Jam tangan, TV, IoT | Framework AI, Tizen TV 2019 |
| 5.5 | 2020 | TV, IoT | AVPlay 2.0, WebAssembly, WebGL yang ditingkatkan |
| 6.0 | 2022 | TV, IoT | Inferensi ML, Protokol Matter |
Arsitektur Tizen dibangun dengan prinsip modular dengan struktur berlapis-lapis. Lapisan paling bawah adalah kernel Linux dengan patch untuk efisiensi energi dan tugas waktu nyata (RT_PREEMPT untuk TV dan audio). Di atas kernel terdapat Lapisan Abstraksi Perangkat Keras (HAL), yang menyediakan akses terpadu ke driver kamera, sensor, Bluetooth, Wi-Fi, NFC, dan tampilan (melalui DirectFB atau Wayland).
Core Framework Layer mencakup Application Framework (manajemen siklus hidup aplikasi), UI Framework (EFL — Enlightenment Foundation Libraries untuk UI, DALi — mesin 3D untuk game dan animasi), Multimedia Framework (kamera, audio, video melalui GStreamer dan MediaCodec), Network Framework (Bluetooth, Wi-Fi, NFC, HTTP, WebSocket), dan Security Framework (SELinux, Smack, Sistem Hak Istimewa Tizen).
Service Layer menyediakan layanan sistem: Application Manager (memulai, menghentikan, multitasking), Package Manager (memasang/menghapus aplikasi, format .tpk dan .wgt), Location Manager (GPS, penentuan posisi Wi-Fi, Geofence), Sensor Manager (akselerometer, giroskop, barometer, monitor detak jantung), Context Manager (pengenalan aktivitas pengguna: berjalan, berlari, tidur).
Tizen menyediakan Device API — antarmuka JavaScript untuk aplikasi web yang memberikan akses ke fungsi yang sama seperti API native. API dibagi menjadi modul: 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.
Aplikasi native Tizen dikompilasi menjadi file yang dapat dieksekusi dalam format .tpk (Tizen Package Kit). Bahasa utamanya adalah C++11/14 dengan kompiler GCC atau Clang. Pengembangan dilakukan di Tizen Studio atau Visual Studio Code dengan ekstensi Tizen. Aplikasi native memiliki akses langsung ke EFL, DALi, GStreamer, dan semua API sistem tanpa perantara, memastikan kinerja maksimal.
Aplikasi native menyertakan file tizen-manifest.xml (mirip AndroidManifest.xml), satu atau lebih pustaka bersama (.so), dan sumber daya (gambar, font, lokalisasi). Siklus hidup dikelola melalui app_event_cb: APP_EVENT_CREATE, APP_EVENT_RESUME, APP_EVENT_PAUSE, APP_EVENT_DESTROY. UI dibangun melalui EFL (Edje + Elementary) untuk aplikasi berjendela atau DALi untuk grafis 3D.
// Aplikasi native Tizen dalam C++ dengan UI EFL
#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) {
// Membuat jendela Tizen
ad->win = efl_add(EFL_UI_WIN_CLASS, nullptr,
efl_ui_win_typename_set(efl_add(EFL_UI_WIN_CLASS, nullptr), "tizen-hello"));
// Judul jendela
efl_text_set(ad->win, "Hello Tizen");
efl_event_callback_add(ad->win, EFL_UI_WIN_EVENT_DELETE_REQUEST, win_delete_cb, ad);
// Conformant — wadah Tizen standar untuk perangkat yang dapat dikenakan
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);
// Label teks
ad->label = efl_add(EFL_UI_LABEL_CLASS, ad->conform);
efl_text_set(ad->label, "Selamat Datang di Tizen!");
efl_content_set(ad->conform, ad->label);
// Menampilkan jendela
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) {
// Handler akuisisi sumber daya aplikasi
appdata_s *ad = (appdata_s *)data;
create_base_gui(ad);
}
static bool
app_create_cb(void *data) {
// Dipanggil saat aplikasi dibuat
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);
}Aplikasi native Tizen Hello World menggunakan EFL (Enlightenment Foundation Libraries) untuk UI. ui_app_main adalah titik masuk Tizen yang menerima callback siklus hidup. efl_add membuat objek UI melalui hierarki Win → Conformant → Label. EFL UI didasarkan pada model komposit Edje — deskripsi tema ditulis dalam file .edc dan dikompilasi menjadi .edj.
File tizen-manifest.xml adalah konfigurasi aplikasi native. Ini menentukan id (pengidentifikasi unik dalam format domain terbalik), package (nama paket), version, label (nama yang ditampilkan), author, dan description. Hak istimewa menyatakan akses API: http://tizen.org/privilege/bluetooth, http://tizen.org/privilege/location, http://tizen.org/privilege/camera. Tanpa menentukan hak istimewa, memanggil API yang sesuai akan menghasilkan kesalahan SECURITY_ERR.
Aplikasi web Tizen adalah aplikasi HTML5 yang dikemas dalam format .wgt (Widget W3C). Pengembangan identik dengan membuat situs web biasa, tetapi dengan akses tambahan ke Tizen Device API melalui objek global tizen. Aplikasi web berjalan dalam proses Web Runtime (WRT) sendiri, berdasarkan mesin WebKit (Tizen 2.x-4.x) atau Chromium (Tizen 5.5+).
Aplikasi web berisi index.html (titik masuk), config.xml (Konfigurasi Widget W3C), CSS, JavaScript, dan gambar. File config.xml mirip dengan manifest.webapp di KaiOS: bidang wajib mencakup widget (id, version, height/width untuk jam tangan), name, description, dan author. Izin untuk Device API ditentukan melalui elemen tizen:privilege. Bagian CSP (Kebijakan Keamanan Konten) membatasi sumber skrip.
// config.xml untuk aplikasi web 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>Monitor detak jantung</name>
<description>Mengukur detak jantung di 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>Cuplikan minimal config.xml menunjukkan elemen kunci: widget dengan id dan versi, tizen:application dengan profil wearable untuk layar jam tangan bundar, tizen:privilege untuk healthinfo dan sensor API, dan Kebijakan Keamanan Konten yang membatasi pemuatan konten hanya dari paket aplikasi.
// Aplikasi web Tizen Watch: pemantauan detak jantung
const HeartRateMonitor = {
hrSensor: null,
isMonitoring: false,
async init() {
try {
// Memeriksa dukungan sensor HRM
const sensors = tizen.sensorservice.getAvailableSensors();
if (!sensors.includes('HRM')) {
throw new Error('Sensor HRM tidak ditemukan');
}
// Mendapatkan akses ke sensor detak jantung
this.hrSensor = tizen.sensorservice.getDefaultSensor('HRM');
console.log('Sensor HRM diinisialisasi');
} catch (err) {
console.error('Kesalahan inisialisasi:', err.message);
}
},
startMonitoring() {
if (!this.hrSensor) return;
this.isMonitoring = true;
this.hrSensor.startSensor({
interval: 1000, // mengukur setiap detik
callback: {
onsuccess: (data) => {
const heartRate = data.heartRate;
document.getElementById('hr-value').textContent = heartRate;
this.updateDisplay(heartRate);
},
onerror: (err) => {
console.error('Kesalahan sensor:', err.message);
}
}
});
},
stopMonitoring() {
if (this.hrSensor && this.isMonitoring) {
this.hrSensor.stopSensor();
this.isMonitoring = false;
}
},
updateDisplay(heartRate) {
// Visualisasi detak jantung di layar bundar 360x360
const canvas = document.getElementById('hr-canvas');
const ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, 360, 360);
// Indikator detak jantung melingkar
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();
});
});Aplikasi HeartRateMonitor menggunakan Tizen Sensor API untuk mengakses sensor HRM Galaxy Watch. tizen.sensorservice.getDefaultSensor('HRM') mendapatkan sensor detak jantung, startSensor memulai pengukuran dengan interval 1 detik. Kanvas 360×360 menggambar indikator melingkar — paradigma UI yang khas untuk layar jam tangan Tizen bundar.
Tizen Watch memiliki fitur UI yang unik: layar bundar (360×360 piksel di Galaxy Watch), bezel fisik (rotary bezel) untuk navigasi, dan tiga tombol perangkat keras: Home, Back, dan Custom. Pengembang harus menyesuaikan antarmuka untuk area bundar — elemen sudut mungkin terpotong. Circle UI adalah pustaka Samsung dengan komponen siap pakai untuk layar bundar.
Rotary Bezel — cincin fisik di sekitar layar Galaxy Watch yang berputar untuk navigasi daftar, penyesuaian volume, dan zoom. Di Tizen, peristiwa rotasi ditangani melalui rotarydetector atau sinyal edge EFL. Setiap takik bezel menghasilkan peristiwa dengan sudut rotasi (0-360 derajat). Aplikasi web menangani bezel melalui API rotarydetector: tizen.rotarydetector.
// Penanganan Rotary Bezel di Tizen Watch
class RotaryNavigation {
constructor() {
this.currentAngle = 0;
this.sections = document.querySelectorAll('.rotary-section');
this.currentSection = 0;
this.init();
}
init() {
// Berlangganan peristiwa rotasi bezel
const detector = tizen.rotarydetector;
detector.addEventListener('rotarydetector', (event) => {
// event.angle — sudut saat ini (0-360)
// event.direction — 'cw' (searah jarum jam) atau 'ccw' (berlawanan arah jarum jam)
this.handleRotation(event);
});
// Mengaktifkan rotarydetector
detector.start();
}
handleRotation(event) {
const delta = event.delta; // perubahan sudut
this.currentAngle += delta;
// Menentukan arah dan pergerakan
if (delta > 0) {
// Rotasi searah jarum jam — elemen berikutnya
this.currentSection = Math.min(this.currentSection + 1, this.sections.length - 1);
} else {
// Rotasi berlawanan arah jarum jam — elemen sebelumnya
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();
}
}
// Inisialisasi saat memuat aplikasi
document.addEventListener('tizen-rotary-ready', () => {
const nav = new RotaryNavigation();
});Kelas RotaryNavigation berlangganan peristiwa rotarydetector melalui tizen.rotarydetector.addEventListener. Saat bezel diputar, arah (cw/ccw) dan delta sudut dihitung. Bagian saat ini disorot dengan kelas active. rotarydetector.start() wajib — tanpanya, peristiwa tidak dihasilkan. destroy() berhenti berlangganan dan menghentikan detektor untuk mencegah kebocoran memori.
Antarmuka Tizen Watch menggunakan komponen: RotarySelector (daftar melingkar yang dikendalikan bezel), CircularList (daftar dengan pengguliran melingkar), RadialMenu (menu radial dengan ikon disusun melingkar), EdgePanel (panel yang meluncur dari tepi layar), dan CircleProgressBar (indikator kemajuan melingkar). Semua komponen dioptimalkan untuk resolusi 360×360 dan memperhitungkan tidak adanya sudut layar. Ukuran target sentuh minimum adalah 48 piksel.
Tizen TV — platform untuk Samsung Smart TV dengan SDK dan emulator sendiri. Aplikasi TV dibagi menjadi dua jenis: aplikasi web (HTML5/JS) dan aplikasi native (C/C++). Aplikasi web untuk TV lebih cepat dan mudah dikembangkan, tetapi aplikasi native memberikan kinerja lebih baik untuk video dan game. Tizen TV menggunakan remote control dengan D-pad untuk navigasi.
AVPlay API — API utama Tizen TV untuk pemutaran video. Mendukung format H.264, H.265 (HEVC), VP9, AV1. Resolusi hingga 8K di TV 2024+. AVPlay API menyediakan decoding perangkat keras, HDR10+, Dolby Atmos, subtitle, dan beberapa trek audio. Kontrol melalui play(), pause(), stop(), seekTo(position), setDisplayRect(). Streaming dapat berupa file lokal atau URL HLS/DASH.
// Pemutar video untuk Tizen TV dengan AVPlay API
class TizenVideoPlayer {
constructor(videoElementId) {
this.videoElement = document.getElementById(videoElementId);
this.avplay = null;
this.isReady = false;
}
async init(url) {
try {
// Memeriksa ketersediaan AVPlay
if (typeof webapis === 'undefined' ||
!webapis.avplay) {
throw new Error('AVPlay API tidak tersedia');
}
this.avplay = webapis.avplay;
this.avplay.open(url);
// Mengatur tampilan ke layar penuh TV
this.avplay.setDisplayRect(0, 0, 3840, 2160);
this.avplay.setDisplayMethod(webapis.avplay.AVPLAY_DISPLAY_METHOD_PLAYER);
// Konfigurasi audio (Dolby Atmos, jika didukung)
this.avplay.setStreamingProperty('ADAPTIVE_INFO', JSON.stringify({
width: 3840,
height: 2160,
bitrate: 25000000
}));
this.avplay.prepareAsync(
() => {
this.isReady = true;
console.log('Video siap diputar');
},
(error) => {
console.error('Kesalahan persiapan:', error);
}
);
} catch (err) {
console.error('Kesalahan inisialisasi:', 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'
}));
}
}
// Penggunaan
const player = new TizenVideoPlayer('video-area');
player.init('https://example.com/stream.m3u8');
player.setSubtitle('https://example.com/subs.vtt', 'UTF-8');Kelas TizenVideoPlayer mendemonstrasikan cara kerja dengan AVPlay API. webapis.avplay.open() membuka streaming media (lokal atau HLS/DASH). setDisplayRect mengatur area rendering — di TV biasanya layar penuh pada 3840×2160. prepareAsync adalah persiapan asinkron dengan callback. AVPlay mendukung kecepatan bit adaptif melalui ADAPTIVE_INFO dan subtitle melalui properti SUBTITLE.
Samsung Galaxy Store — toko aplikasi resmi untuk Tizen (jam tangan, TV, IoT). Pendaftaran pengembang gratis melalui program Samsung Developers. Pengembang mengunggah aplikasi dalam format .tpk (native) atau .wgt (web), ditandatangani dengan sertifikat Samsung. Moderasi memakan waktu 2-5 hari kerja. Galaxy Store tersedia di 190 negara.
Tizen memerlukan tanda tangan digital untuk aplikasi dengan sertifikat Samsung. Proses: buat Sertifikat Penulis melalui Samsung Certificate Manager, buat Sertifikat Distributor untuk toko, tanda tangani paket melalui Tizen Studio (Build Signed Package). Sertifikat ditautkan ke akun pengembang. Tanpa tanda tangan, aplikasi hanya dapat diinstal di perangkat pengembangan dengan Mode Pengembang diaktifkan.
Galaxy Store mendukung aplikasi berbayar (komisi 30% untuk $10.000 pertama, lalu 25%), langganan (25%), iklan melalui Samsung Ads, dan pembelian dalam aplikasi melalui Samsung IAP. Untuk aplikasi TV, model Smart TV Premium Channels tersedia. Harga minimum adalah $0,99. Pembayaran dilakukan setiap bulan setelah mencapai ambang batas $100.
| Persyaratan | Native (.tpk) | Web (.wgt) |
|---|---|---|
| Bahasa | C/C++ | HTML5, CSS, JS |
| Framework UI | EFL, DALi, Tizen Circle UI | Circle UI (JS) |
| Akses API | Sistem penuh | Device API |
| Kinerja | Maksimal | Lebih rendah (Web Runtime) |
| Ukuran Paket | Hingga 100 MB | Hingga 10 MB |
| Templat Awal | Tizen Native App | Tizen Web App |
Pertanyaan yang Sering Diajukan
Aplikasi native ditulis dalam C/C++ menggunakan EFL atau DALi untuk UI. Aplikasi web menggunakan HTML5, CSS, dan JavaScript dengan Tizen Device API. Untuk Tizen TV, pengembangan dalam .NET (C#) tersedia melalui Tizen .NET. Samsung merekomendasikan C++ untuk aplikasi berkinerja tinggi dan JavaScript untuk antarmuka sederhana.
Tizen menggunakan framework C/C++ sendiri yang dioptimalkan untuk perangkat keras Samsung. Wear OS didasarkan pada Android dengan Kotlin/Java. Tizen mengonsumsi daya 30% lebih sedikit pada perangkat keras yang sama, tetapi memiliki lebih sedikit aplikasi di toko. Sejak 2021, Samsung beralih ke Wear OS di jam tangan baru, tetapi Tizen terus didukung.
Aplikasi web untuk Tizen TV dibuat dalam HTML5/JavaScript dengan Tizen Device API. Pengembangan dilakukan di Tizen Studio dengan emulator TV. Aplikasi dikemas dalam paket .wgt. API utama: AVPlay (video), TVInfoDevice (spesifikasi TV), TVInputDevice (remote control), WebAudio (suara). Navigasi melalui D-pad remote.
Rotary Bezel — cincin fisik berputar di sekitar layar Galaxy Watch untuk navigasi. Peristiwa ditangani melalui API tizen.rotarydetector. Setiap takik menghasilkan peristiwa dengan sudut rotasi dan arah (cw/ccw). Rotary Bezel digunakan untuk menggulir daftar, menyesuaikan volume, zoom, dan navigasi menu.
Publikasi melalui Samsung Galaxy Store. Pendaftaran pengembang gratis. Aplikasi (format .tpk atau .wgt) ditandatangani dengan sertifikat Samsung. Moderasi 2-5 hari. Komisi 30% untuk $10.000 pendapatan pertama, lalu 25%. Harga minimum $0,99. Pembayaran bulanan mulai dari $100.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga