Tizen, Samsung ve Linux Foundation tarafından geliştirilen Linux tabanlı açık kaynaklı bir işletim sistemidir. Galaxy Watch akıllı saatlerde, Samsung Smart TV'lerde, ev aletlerinde ve IoT cihazlarında kullanılır. Yerel uygulamalar için C/C++, web uygulamaları için HTML5/JavaScript ile geliştirme yapılır. Tizen SDK, bir emülatör ve Visual Studio Code tabanlı IDE sağlar. Tizen Association'a göre, ekosistem 200 milyondan fazla cihazı kapsamaktadır.
Ana Noktalar
Tizen, Samsung ve Linux Foundation tarafından denetlenen açık kaynaklı bir işletim sistemidir. İlk ticari sürüm Tizen 1.0, 2012'de piyasaya sürüldü. Sistem Linux çekirdeğini temel alır ve farklı cihaz türleri için kendi framework mimarisini kullanır: Tizen Mobile (akıllı telefonlar — proje 2017'de kapatıldı), Tizen Watch (saatler), Tizen TV (televizyonlar) ve Tizen IoT (akıllı ev).
2021'den bu yana Samsung, Tizen'i esas olarak giyilebilir cihazlarda ve televizyonlarda kullanmaktadır. 2021 öncesi tüm Galaxy Watch akıllı saatler Tizen'de çalışıyordu (Galaxy Watch, Watch Active, Watch 3). Galaxy Watch 4'ten itibaren Samsung, One UI Watch ile Wear OS'a geçti, ancak Tizen mevcut cihazlar ve TV'ler için desteklenmeye devam ediyor. Samsung'a (Tizen Ekosistem Raporu, 2025) göre dünya çapında 180 milyondan fazla TV'de Tizen TV yüklüdür.
Tizen'in önemli bir özelliği, iki geliştirme paradigmasını desteklemesidir: maksimum performans için yerel uygulamalar (C/C++) ve hızlı geliştirme için web uygulamaları (HTML5, CSS, JavaScript). Her iki tür de Tizen Device API'ye erişebilir — Bluetooth, NFC, Wi-Fi, sensörler, kamera ve multimedya ile çalışmak için sarmalayıcılar.
Tizen 2.3 (2014) — Samsung Z akıllı telefonlar için ilk kararlı sürüm. Tizen 3.0 (2017) — geliştirilmiş çoklu görev, Vulkan desteği, 64 bit mimari. Tizen 4.0 (2018) — yeniden tasarlanan framework'ler, NPU'da AI hızlandırma desteği. Tizen 5.5 (2020) — AVPlay 2.0, WebAssembly, geliştirilmiş oluşturma ile Tizen TV. Tizen 6.0 (2022) — cihaz üzerinde ML çıkarım desteği, IoT için Matter Protokolü.
| Tizen Sürümü | Yıl | Cihazlar | Ana Yenilik |
|---|---|---|---|
| 2.3 | 2014 | Akıllı telefonlar | Samsung Z'de ilk ticari sürüm |
| 3.0 | 2017 | Akıllı telefonlar, saatler | Vulkan, 64 bit, Galaxy Watch |
| 4.0 | 2018 | Saatler, TV, IoT | AI framework'leri, Tizen TV 2019 |
| 5.5 | 2020 | TV, IoT | AVPlay 2.0, WebAssembly, geliştirilmiş WebGL |
| 6.0 | 2022 | TV, IoT | ML çıkarım, Matter Protokolü |
Tizen Mimarisi çok katmanlı bir yapı ile modüler prensip üzerine inşa edilmiştir. En alt katman, enerji verimliliği ve gerçek zamanlı görevler (TV ve ses için RT_PREEMPT) için yamalar içeren Linux çekirdeğidir. Çekirdeğin üzerinde, donanım soyutlama katmanı (HAL) bulunur ve kamera, sensör, Bluetooth, Wi-Fi, NFC ve ekran sürücülerine (DirectFB veya Wayland aracılığıyla) birleşik erişim sağlar.
Core Framework katmanı şunları içerir: Application Framework (uygulama yaşam döngüsü yönetimi), UI Framework (EFL — UI için Enlightenment Foundation Libraries, DALi — oyunlar ve animasyonlar için 3D motor), Multimedia Framework (GStreamer ve MediaCodec aracılığıyla kamera, ses, video), Network Framework (Bluetooth, Wi-Fi, NFC, HTTP, WebSocket) ve Security Framework (SELinux, Smack, Tizen Ayrıcalık Sistemi).
Service katmanı sistem hizmetleri sağlar: Application Manager (başlatma, durdurma, çoklu görev), Package Manager (uygulama yükleme/kaldırma, .tpk ve .wgt biçimleri), Location Manager (GPS, Wi-Fi konumlandırma, Coğrafi Çit), Sensor Manager (ivmeölçer, jiroskop, barometre, kalp atış hızı monitörü), Context Manager (kullanıcı etkinliği tanıma: yürüme, koşma, uyuma).
Tizen, web uygulamaları için Device API sağlar — yerel API'lerle aynı işlevlere erişim sağlayan JavaScript arayüzleri. API'ler modüllere ayrılmıştır: 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 yerel uygulamaları, .tpk biçiminde (Tizen Package Kit) yürütülebilir bir dosyaya derlenir. Ana dil, GCC veya Clang derleyicisi ile C++11/14'tür. Geliştirme, Tizen Studio veya Tizen uzantılı Visual Studio Code'da yapılır. Yerel uygulamalar, EFL, DALi, GStreamer ve tüm sistem API'lerine aracısız doğrudan erişime sahiptir ve maksimum performans sağlar.
Yerel uygulama bir tizen-manifest.xml dosyası (AndroidManifest.xml'e benzer), bir veya daha fazla paylaşımlı kitaplık (.so) ve kaynaklar (resimler, yazı tipleri, yerelleştirmeler) içerir. Yaşam döngüsü app_event_cb aracılığıyla yönetilir: APP_EVENT_CREATE, APP_EVENT_RESUME, APP_EVENT_PAUSE, APP_EVENT_DESTROY. UI, pencere uygulamaları için EFL (Edje + Elementary) veya 3D grafikler için DALi aracılığıyla oluşturulur.
// EFL UI ile C++'ta Tizen yerel uygulaması
#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 penceresi oluşturma
ad->win = efl_add(EFL_UI_WIN_CLASS, nullptr,
efl_ui_win_typename_set(efl_add(EFL_UI_WIN_CLASS, nullptr), "tizen-hello"));
// Pencere başlığı
efl_text_set(ad->win, "Hello Tizen");
efl_event_callback_add(ad->win, EFL_UI_WIN_EVENT_DELETE_REQUEST, win_delete_cb, ad);
// Conformant — giyilebilir cihazlar için standart Tizen kapsayıcısı
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);
// Metin etiketi
ad->label = efl_add(EFL_UI_LABEL_CLASS, ad->conform);
efl_text_set(ad->label, "Tizen'e Hoş Geldiniz!");
efl_content_set(ad->conform, ad->label);
// Pencereyi görüntüleme
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) {
// Uygulama kaynağı edinme işleyicisi
appdata_s *ad = (appdata_s *)data;
create_base_gui(ad);
}
static bool
app_create_cb(void *data) {
// Uygulama oluşturulduğunda çağrılır
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);
}Yerel Tizen Hello World uygulaması, UI için EFL (Enlightenment Foundation Libraries) kullanır. ui_app_main, yaşam döngüsü geri çağrılarını kabul eden Tizen giriş noktasıdır. efl_add, Win → Conformant → Label hiyerarşisi aracılığıyla UI nesneleri oluşturur. EFL UI, Edje kompozit modeline dayanır — tema açıklamaları .edc dosyalarına yazılır ve .edj'ye derlenir.
tizen-manifest.xml dosyası, yerel uygulamanın yapılandırmasıdır. id (ters alan adı biçiminde benzersiz tanımlayıcı), package (paket adı), version, label (görünen ad), author ve description belirtir. Ayrıcalıklar API erişimini bildirir: http://tizen.org/privilege/bluetooth, http://tizen.org/privilege/location, http://tizen.org/privilege/camera. Bir ayrıcalık belirtilmeden ilgili API'nin çağrılması SECURITY_ERR hatasıyla sonuçlanır.
Tizen web uygulamaları, .wgt biçiminde (W3C Widget) paketlenmiş HTML5 uygulamalarıdır. Geliştirme, normal bir web sitesi oluşturmakla aynıdır ancak global tizen nesnesi aracılığıyla Tizen Device API'ye ek erişim sağlar. Web uygulamaları, WebKit motoruna (Tizen 2.x-4.x) veya Chromium'a (Tizen 5.5+) dayalı kendi Web Runtime (WRT) sürecinde çalışır.
Bir web uygulaması index.html (giriş noktası), config.xml (W3C Widget Yapılandırması), CSS, JavaScript ve resimler içerir. config.xml dosyası, KaiOS'teki manifest.webapp'a benzer: zorunlu alanlar widget (id, version, saatler için height/width), name, description ve author'i içerir. Device API için izinler tizen:privilege öğesi aracılığıyla belirtilir. CSP (İçerik Güvenlik Politikası) bölümü, komut dosyası kaynaklarını kısıtlar.
// Tizen Watch web uygulaması için config.xml
<?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>Nabız ölçer</name>
<description>Galaxy Watch'ta nabız ölçümü</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>Minimum config.xml parçacığı, temel öğeleri gösterir: id ve sürüm ile widget, yuvarlak saat ekranları için wearable profili ile tizen:application, healthinfo ve sensor API için tizen:privilege ve içerik yüklemeyi yalnızca uygulama paketiyle sınırlayan bir İçerik Güvenlik Politikası.
// Tizen Watch web uygulaması: kalp atış hızı izleme
const HeartRateMonitor = {
hrSensor: null,
isMonitoring: false,
async init() {
try {
// HRM sensör desteğini kontrol etme
const sensors = tizen.sensorservice.getAvailableSensors();
if (!sensors.includes('HRM')) {
throw new Error('HRM sensörü bulunamadı');
}
// Kalp atış hızı sensörüne erişim sağlama
this.hrSensor = tizen.sensorservice.getDefaultSensor('HRM');
console.log('HRM sensörü başlatıldı');
} catch (err) {
console.error('Başlatma hatası:', err.message);
}
},
startMonitoring() {
if (!this.hrSensor) return;
this.isMonitoring = true;
this.hrSensor.startSensor({
interval: 1000, // her saniye ölçüm
callback: {
onsuccess: (data) => {
const heartRate = data.heartRate;
document.getElementById('hr-value').textContent = heartRate;
this.updateDisplay(heartRate);
},
onerror: (err) => {
console.error('Sensör hatası:', err.message);
}
}
});
},
stopMonitoring() {
if (this.hrSensor && this.isMonitoring) {
this.hrSensor.stopSensor();
this.isMonitoring = false;
}
},
updateDisplay(heartRate) {
// 360x360 yuvarlak ekranda kalp atış hızı görselleştirme
const canvas = document.getElementById('hr-canvas');
const ctx = canvas.getContext('2d');
ctx.clearRect(0, 0, 360, 360);
// Dairesel kalp atış hızı göstergesi
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 uygulaması, Galaxy Watch HRM sensörüne erişmek için Tizen Sensor API'yi kullanır. tizen.sensorservice.getDefaultSensor('HRM') kalp atış hızı sensörünü alır, startSensor 1 saniye aralıklarla ölçümlere başlar. 360×360 tuval, dairesel bir gösterge çizer — yuvarlak Tizen saat ekranları için tipik bir UI paradigması.
Tizen Watch benzersiz UI özelliklerine sahiptir: yuvarlak ekran (Galaxy Watch'ta 360×360 piksel), gezinme için fiziksel çerçeve (rotary bezel) ve üç donanım düğmesi: Home, Back ve Custom. Geliştirici, arayüzü yuvarlak alana uyarlamalıdır — köşe öğeleri kesilebilir. Circle UI, yuvarlak ekranlar için hazır bileşenler içeren bir Samsung kitaplığıdır.
Rotary Bezel — Galaxy Watch ekranı etrafında listelerde gezinme, ses seviyesi ayarlama ve yakınlaştırma için dönen fiziksel bir halkadır. Tizen'de döndürme olayı rotarydetector veya EFL edge sinyali aracılığıyla işlenir. Her çerçeve çentiği, bir dönüş açısı (0-360 derece) ile bir olay oluşturur. Web uygulamaları, çerçeveyi rotarydetector API (tizen.rotarydetector) aracılığıyla işler.
// Tizen Watch'ta Rotary Bezel işleme
class RotaryNavigation {
constructor() {
this.currentAngle = 0;
this.sections = document.querySelectorAll('.rotary-section');
this.currentSection = 0;
this.init();
}
init() {
// Çerçeve döndürme olaylarına abone olma
const detector = tizen.rotarydetector;
detector.addEventListener('rotarydetector', (event) => {
// event.angle — geçerli açı (0-360)
// event.direction — 'cw' (saat yönünde) veya 'ccw' (saat yönünün tersine)
this.handleRotation(event);
});
// rotarydetector'ı etkinleştirme
detector.start();
}
handleRotation(event) {
const delta = event.delta; // açı değişikliği
this.currentAngle += delta;
// Yön ve hareket belirleme
if (delta > 0) {
// Saat yönünde döndürme — sonraki öğe
this.currentSection = Math.min(this.currentSection + 1, this.sections.length - 1);
} else {
// Saat yönünün tersine döndürme — önceki öğe
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();
}
}
// Uygulama yüklenirken başlatma
document.addEventListener('tizen-rotary-ready', () => {
const nav = new RotaryNavigation();
});RotaryNavigation sınıfı, tizen.rotarydetector.addEventListener aracılığıyla rotarydetector olaylarına abone olur. Çerçeve döndürüldüğünde yön (cw/ccw) ve açı deltası hesaplanır. Geçerli bölüm active sınıfıyla vurgulanır. rotarydetector.start() zorunludur — onsuz olaylar oluşturulmaz. destroy() aboneliği iptal eder ve bellek sızıntılarını önlemek için dedektörü durdurur.
Tizen Watch arayüzü şu bileşenleri kullanır: RotarySelector(çerçeve kontrollü dairesel liste), CircularList(dairesel kaydırmalı liste), RadialMenu(bir daire içinde düzenlenmiş simgelerle radyal menü), EdgePanel(ekran kenarından kayan panel) ve CircleProgressBar(dairesel ilerleme göstergesi). Tüm bileşenler 360×360 çözünürlük için optimize edilmiştir ve ekran köşelerinin olmadığını hesaba katar. Minimum dokunma hedefi boyutu 48 pikseldir.
Tizen TV — kendi SDK'sı ve emülatörü ile Samsung Smart TV için bir platformdur. TV uygulamaları iki türe ayrılır: web uygulamaları (HTML5/JS) ve yerel uygulamalar (C/C++). TV için web uygulamaları daha hızlı ve kolay geliştirilir, ancak yerel uygulamalar video ve oyunlar için daha iyi performans sunar. Tizen TV, gezinme için D-pad'li bir uzaktan kumanda kullanır.
AVPlay API — video oynatma için Tizen TV'nin ana API'sidir. H.264, H.265 (HEVC), VP9, AV1 biçimlerini destekler. 2024+ TV'lerde 8K'ya kadar çözünürlük. AVPlay API, donanımsal kod çözme, HDR10+, Dolby Atmos, altyazılar ve birden çok ses parçası sağlar. play(), pause(), stop(), seekTo(position), setDisplayRect() ile kontrol. Akış yerel bir dosya veya HLS/DASH URL'si olabilir.
// AVPlay API ile Tizen TV için video oynatıcı
class TizenVideoPlayer {
constructor(videoElementId) {
this.videoElement = document.getElementById(videoElementId);
this.avplay = null;
this.isReady = false;
}
async init(url) {
try {
// AVPlay kullanılabilirliğini kontrol etme
if (typeof webapis === 'undefined' ||
!webapis.avplay) {
throw new Error('AVPlay API kullanılamıyor');
}
this.avplay = webapis.avplay;
this.avplay.open(url);
// TV'de tam ekran görüntü ayarlama
this.avplay.setDisplayRect(0, 0, 3840, 2160);
this.avplay.setDisplayMethod(webapis.avplay.AVPLAY_DISPLAY_METHOD_PLAYER);
// Ses yapılandırması (Dolby Atmos, destekleniyorsa)
this.avplay.setStreamingProperty('ADAPTIVE_INFO', JSON.stringify({
width: 3840,
height: 2160,
bitrate: 25000000
}));
this.avplay.prepareAsync(
() => {
this.isReady = true;
console.log('Video oynatmaya hazır');
},
(error) => {
console.error('Hazırlık hatası:', error);
}
);
} catch (err) {
console.error('Başlatma hatası:', 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'
}));
}
}
// Kullanım
const player = new TizenVideoPlayer('video-area');
player.init('https://example.com/stream.m3u8');
player.setSubtitle('https://example.com/subs.vtt', 'UTF-8');TizenVideoPlayer sınıfı, AVPlay API ile çalışmayı gösterir. webapis.avplay.open() bir medya akışı (yerel veya HLS/DASH) açar. setDisplayRect işleme alanını ayarlar — TV'de genellikle 3840×2160'ta tam ekrandır. prepareAsync, geri çağırmalarla eşzamansız hazırlıktır. AVPlay, ADAPTIVE_INFO aracılığıyla uyarlanabilir bit hızını ve SUBTITLE özelliği aracılığıyla altyazıları destekler.
Samsung Galaxy Store — Tizen (saatler, TV'ler, IoT) için resmi uygulama mağazasıdır. Geliştirici kaydı Samsung Developers programı aracılığıyla ücretsizdir. Geliştiriciler, Samsung sertifikasıyla imzalanmış .tpk (yerel) veya .wgt (web) biçiminde uygulamalar yükler. Denetleme 2-5 iş günü sürer. Galaxy Store 190 ülkede kullanılabilir.
Tizen, uygulamalar için Samsung sertifikasıyla dijital imza gerektirir. Süreç: Samsung Certificate Manager aracılığıyla Yazar Sertifikası oluşturun, mağaza için Dağıtıcı Sertifikası oluşturun, Tizen Studio (Build Signed Package) aracılığıyla paketi imzalayın. Sertifika, geliştirici hesabına bağlanır. İmza olmadan uygulama yalnızca Geliştirici Modu etkinleştirilmiş geliştirme cihazlarına kurulabilir.
Galaxy Store, ücretli uygulamaları (ilk 10.000$'da %30 komisyon, sonra %25), abonelikleri (%25), Samsung Ads aracılığıyla reklamcılığı ve Samsung IAP aracılığıyla uygulama içi satın alımları destekler. TV uygulamaları için Smart TV Premium Channels modeli mevcuttur. Minimum fiyat 0,99$'dır. 100$ eşiğine ulaşıldığında aylık ödemeler yapılır.
| Gereksinim | Yerel (.tpk) | Web (.wgt) |
|---|---|---|
| Dil | C/C++ | HTML5, CSS, JS |
| UI Framework | EFL, DALi, Tizen Circle UI | Circle UI (JS) |
| API Erişimi | Tam sistem | Device API |
| Performans | Maksimum | Daha düşük (Web Runtime) |
| Paket Boyutu | 100 MB'a kadar | 10 MB'a kadar |
| Başlangıç Şablonu | Tizen Native App | Tizen Web App |
Sıkça Sorulan Sorular
Yerel uygulamalar, UI için EFL veya DALi kullanılarak C/C++ ile yazılır. Web uygulamaları, Tizen Device API ile HTML5, CSS ve JavaScript kullanır. Tizen TV için Tizen .NET aracılığıyla .NET (C#) ile geliştirme mevcuttur. Samsung, yüksek performanslı uygulamalar için C++ ve basit arayüzler için JavaScript önerir.
Tizen, Samsung donanımı için optimize edilmiş kendi C/C++ framework'ünü kullanır. Wear OS, Kotlin/Java ile Android tabanlıdır. Tizen aynı donanımda %30 daha az güç tüketir ancak mağazada daha az uygulama bulunur. 2021'den bu yana Samsung yeni saatlerde Wear OS'a geçti ancak Tizen desteklenmeye devam ediyor.
Tizen TV için web uygulaması, Tizen Device API ile HTML5/JavaScript'te oluşturulur. Geliştirme, TV emülatörü ile Tizen Studio'da yapılır. Uygulama .wgt paketine paketlenir. Ana API'ler: AVPlay (video), TVInfoDevice (TV özellikleri), TVInputDevice (uzaktan kumanda), WebAudio (ses). Uzaktan kumandanın D-pad'i ile gezinme.
Rotary Bezel — gezinme için Galaxy Watch ekranı etrafında fiziksel dönen bir halkadır. Olaylar tizen.rotarydetector API aracılığıyla işlenir. Her çentik, bir dönüş açısı ve yön (cw/ccw) ile bir olay oluşturur. Rotary Bezel, listelerde kaydırma, ses seviyesi ayarlama, yakınlaştırma ve menü gezinme için kullanılır.
Samsung Galaxy Store aracılığıyla yayınlama. Geliştirici kaydı ücretsizdir. Uygulama (.tpk veya .wgt biçimi) Samsung sertifikasıyla imzalanır. Denetleme 2-5 gün. İlk 10.000$ gelirde %30 komisyon, sonra %25. Minimum fiyat 0,99$. 100$'dan aylık ödemeler.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun