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, το οικοσύστημα περιλαμβάνει πάνω από 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 εξακολουθεί να υποστηρίζεται για υπάρχουσες συσκευές και TV. Σύμφωνα με τη 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-bit. 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-bit, Galaxy Watch
4.02018Ρολόγια, TV, IoTΠλαίσια AI, Tizen TV 2019
5.52020TV, IoTAVPlay 2.0, WebAssembly, βελτιωμένο WebGL
6.02022TV, IoTΣυμπεράσματα ML, Πρωτόκολλο 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++ με 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) {
    // Δημιουργία παραθύρου 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 που δέχεται callbacks κύκλου ζωής. Το 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 (Διαμόρφωση Widget W3C), CSS, JavaScript και εικόνες. Το αρχείο config.xml είναι παρόμοιο με το manifest.webapp στο KaiOS: τα υποχρεωτικά πεδία περιλαμβάνουν widget (id, version, height/width για ρολόγια), name, description και author. Τα δικαιώματα για Device API καθορίζονται μέσω του στοιχείου tizen:privilege. Το τμήμα CSP (Πολιτική Ασφάλειας Περιεχομένου) περιορίζει τις πηγές σεναρίων.

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, και Πολιτική Ασφάλειας Περιεχομένου που περιορίζει τη φόρτωση περιεχομένου μόνο από το πακέτο εφαρμογής.

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 δευτερολέπτου. Ένας καμβάς 360×360 σχεδιάζει έναν κυκλικό δείκτη — ένα τυπικό παράδειγμα UI για στρογγυλές οθόνες ρολογιού Tizen.

Ανάπτυξη για Tizen Watch: Circle UI και Rotary

Tizen Watch έχει μοναδικά χαρακτηριστικά UI: στρογγυλή οθόνη (360×360 pixel στο Galaxy Watch), φυσικό δακτύλιο (rotary bezel) για πλοήγηση και τρία κουμπιά υλικού: Home, Back και Custom. Ο προγραμματιστής πρέπει να προσαρμόσει τη διεπαφή σε στρογγυλή περιοχή — τα γωνιακά στοιχεία μπορεί να αποκοπούν. Το Circle UI είναι μια βιβλιοθήκη Samsung με έτοιμα στοιχεία για στρογγυλές οθόνες.

Rotary Bezel

Rotary Bezel — ένας φυσικός δακτύλιος γύρω από την οθόνη του Galaxy Watch που περιστρέφεται για πλοήγηση σε λίστες, ρύθμιση έντασης και ζουμ. Στο Tizen, το συμβάν περιστροφής διαχειρίζεται μέσω rotarydetector ή σήματος edge EFL. Κάθε εγκοπή του δακτυλίου δημιουργεί ένα συμβάν με γωνία περιστροφής (0-360 μοίρες). Οι διαδικτυακές εφαρμογές διαχειρίζονται τον δακτύλιο μέσω του API rotarydetector: 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 και λαμβάνουν υπόψη την απουσία γωνιών οθόνης. Το ελάχιστο μέγεθος στόχου αφής είναι 48 pixel.

Ανάπτυξη για 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(). Η ροή μπορεί να είναι τοπικό αρχείο ή URL HLS/DASH.

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 ορίζει την περιοχή απόδοσης — στην τηλεόραση είναι συνήθως πλήρης οθόνη στα 3840×2160. Το prepareAsync είναι ασύγχρονη προετοιμασία με callbacks. Το AVPlay υποστηρίζει προσαρμοστικό bitrate μέσω 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). Το πιστοποιητικό συνδέεται με τον λογαριασμό προγραμματιστή. Χωρίς υπογραφή, η εφαρμογή μπορεί να εγκατασταθεί μόνο σε συσκευές ανάπτυξης με ενεργοποιημένη τη Λειτουργία Προγραμματιστή.

Μοντέλο δημιουργίας εσόδων

Το 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
Πλαίσιο UIEFL, 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 για πλοήγηση. Τα συμβάντα διαχειρίζονται μέσω του API tizen.rotarydetector. Κάθε εγκοπή δημιουργεί ένα συμβάν με γωνία περιστροφής και κατεύθυνση (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. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης