Tizen: bản chất phát triển cho Samsung Watch và Smart TV

Tác giả: IT Sectr Đã đăng: 2026-02-07 Thời gian đọc: 13 phút

Tizen là hệ điều hành mã nguồn mở dựa trên Linux, được phát triển bởi Samsung và Linux Foundation. Nó được sử dụng trong đồng hồ thông minh Galaxy Watch, TV Samsung Smart TV, thiết bị gia dụng và thiết bị IoT. Việc phát triển được thực hiện bằng C/C++ cho ứng dụng native và HTML5/JavaScript cho ứng dụng web. Tizen SDK cung cấp trình giả lập và IDE dựa trên Visual Studio Code. Theo Tizen Association, hệ sinh thái bao gồm hơn 200 triệu thiết bị.

Những điểm chính

  • Tizen — HĐH mã nguồn mở của Samsung trên nhân Linux cho đồng hồ, TV, thiết bị gia dụng và IoT
  • C/C++ — ngôn ngữ chính cho ứng dụng native hiệu suất cao với toàn quyền truy cập phần cứng
  • HTML5/JS — stack cho ứng dụng web với Tizen Device API và khả năng tạo mẫu nhanh
  • Tizen Studio — SDK với trình giả lập đồng hồ và TV, profiler và debugger dựa trên VS Code
  • Galaxy Store — cửa hàng ứng dụng Samsung với kiểm duyệt, chữ ký và hoa hồng 30/25%

Tizen là gì?

Tizen là hệ điều hành mã nguồn mở do Samsung và Linux Foundation giám sát. Bản phát hành thương mại đầu tiên Tizen 1.0 ra mắt vào năm 2012. Hệ thống dựa trên nhân Linux và sử dụng kiến trúc framework riêng cho các loại thiết bị khác nhau: Tizen Mobile (điện thoại thông minh — dự án đóng cửa năm 2017), Tizen Watch (đồng hồ), Tizen TV (tivi), và Tizen IoT (nhà thông minh).

Từ năm 2021, Samsung sử dụng Tizen chủ yếu trong thiết bị đeo và tivi. Tất cả đồng hồ thông minh Galaxy Watch trước năm 2021 đều chạy Tizen (Galaxy Watch, Watch Active, Watch 3). Bắt đầu từ Galaxy Watch 4, Samsung đã chuyển sang Wear OS với One UI Watch, nhưng Tizen vẫn được hỗ trợ cho các thiết bị hiện có và TV. Theo Samsung (Tizen Ecosystem Report, 2025), hơn 180 triệu TV trên toàn thế giới đã cài đặt Tizen TV.

Một tính năng chính của Tizen là hỗ trợ hai mô hình phát triển: ứng dụng native (C/C++) với hiệu suất tối đa và ứng dụng web (HTML5, CSS, JavaScript) để phát triển nhanh. Cả hai loại đều có quyền truy cập vào Tizen Device API — các wrapper để làm việc với Bluetooth, NFC, Wi-Fi, cảm biến, máy ảnh và đa phương tiện.

Lịch sử phiên bản Tizen

Tizen 2.3 (2014) — phiên bản ổn định đầu tiên cho điện thoại thông minh Samsung Z. Tizen 3.0 (2017) — cải thiện đa nhiệm, hỗ trợ Vulkan, kiến trúc 64-bit. Tizen 4.0 (2018) — framework thiết kế lại, hỗ trợ tăng tốc AI trên NPU. Tizen 5.5 (2020) — Tizen TV với AVPlay 2.0, WebAssembly, cải thiện kết xuất. Tizen 6.0 (2022) — hỗ trợ suy luận ML trên thiết bị, Giao thức Matter cho IoT.

Phiên bản TizenNămThiết bịCải tiến chính
2.32014Điện thoại thông minhPhát hành thương mại đầu tiên trên Samsung Z
3.02017Điện thoại thông minh, đồng hồVulkan, 64-bit, Galaxy Watch
4.02018Đồng hồ, TV, IoTFramework AI, Tizen TV 2019
5.52020TV, IoTAVPlay 2.0, WebAssembly, WebGL cải thiện
6.02022TV, IoTSuy luận ML, Giao thức Matter

Kiến trúc Tizen: nhân Linux và framework

Kiến trúc Tizen được xây dựng theo nguyên tắc mô-đun với cấu trúc đa lớp. Lớp dưới cùng là nhân Linux với các bản vá cho hiệu quả năng lượng và tác vụ thời gian thực (RT_PREEMPT cho TV và âm thanh). Phía trên nhân là Lớp trừu tượng hóa phần cứng (HAL), cung cấp quyền truy cập thống nhất vào trình điều khiển camera, cảm biến, Bluetooth, Wi-Fi, NFC và màn hình (qua DirectFB hoặc Wayland).

Core Framework Layer

Core Framework Layer bao gồm Application Framework(quản lý vòng đời ứng dụng), UI Framework(EFL — Enlightenment Foundation Libraries cho UI, DALi — engine 3D cho game và hoạt ảnh), Multimedia Framework(camera, âm thanh, video qua GStreamer và MediaCodec), Network Framework(Bluetooth, Wi-Fi, NFC, HTTP, WebSocket) và Security Framework(SELinux, Smack, Hệ thống đặc quyền Tizen).

Service Layer

Service Layer cung cấp dịch vụ hệ thống: Application Manager(khởi chạy, dừng, đa nhiệm), Package Manager(cài đặt/gỡ cài đặt ứng dụng, định dạng .tpk và .wgt), Location Manager(GPS, định vị Wi-Fi, Geofence), Sensor Manager(gia tốc kế, con quay hồi chuyển, phong vũ biểu, máy đo nhịp tim), Context Manager(nhận dạng hoạt động người dùng: đi bộ, chạy, ngủ).

Device API cho ứng dụng web

Tizen cung cấp Device API — các giao diện JavaScript cho ứng dụng web cung cấp quyền truy cập vào các chức năng tương tự như API native. Các API được chia thành mô-đun: 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.

Ứng dụng native Tizen bằng C/C++

Ứng dụng native Tizen được biên dịch thành tệp thực thi định dạng .tpk (Tizen Package Kit). Ngôn ngữ chính là C++11/14 với trình biên dịch GCC hoặc Clang. Phát triển được thực hiện trong Tizen Studio hoặc Visual Studio Code với tiện ích mở rộng Tizen. Ứng dụng native có quyền truy cập trực tiếp vào EFL, DALi, GStreamer và tất cả API hệ thống mà không qua trung gian, đảm bảo hiệu suất tối đa.

Cấu trúc ứng dụng native

Ứng dụng native bao gồm tệp tizen-manifest.xml (tương tự AndroidManifest.xml), một hoặc nhiều thư viện chia sẻ (.so) và tài nguyên (hình ảnh, phông chữ, bản địa hóa). Vòng đời được quản lý qua app_event_cb: APP_EVENT_CREATE, APP_EVENT_RESUME, APP_EVENT_PAUSE, APP_EVENT_DESTROY. UI được xây dựng qua EFL (Edje + Elementary) cho ứng dụng cửa sổ hoặc DALi cho đồ họa 3D.

cpp
// Ứng dụng native Tizen bằng C++ với 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) {
    // Tạo cửa sổ Tizen
    ad->win = efl_add(EFL_UI_WIN_CLASS, nullptr,
                      efl_ui_win_typename_set(efl_add(EFL_UI_WIN_CLASS, nullptr), "tizen-hello"));

    // Tiêu đề cửa sổ
    efl_text_set(ad->win, "Hello Tizen");
    efl_event_callback_add(ad->win, EFL_UI_WIN_EVENT_DELETE_REQUEST, win_delete_cb, ad);

    // Conformant — vùng chứa Tizen tiêu chuẩn cho thiết bị đeo
    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);

    // Nhãn văn bản
    ad->label = efl_add(EFL_UI_LABEL_CLASS, ad->conform);
    efl_text_set(ad->label, "Chào mừng đến với Tizen!");
    efl_content_set(ad->conform, ad->label);

    // Hiển thị cửa sổ
    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) {
    // Trình xử lý thu thập tài nguyên ứng dụng
    appdata_s *ad = (appdata_s *)data;
    create_base_gui(ad);
}

static bool
app_create_cb(void *data) {
    // Được gọi khi ứng dụng được tạo
    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);
}

Ứng dụng native Tizen Hello World sử dụng EFL (Enlightenment Foundation Libraries) cho UI. ui_app_main là điểm vào Tizen chấp nhận callback vòng đời. efl_add tạo đối tượng UI qua hệ thống phân cấp Win → Conformant → Label. EFL UI dựa trên mô hình tổng hợp Edje — mô tả chủ đề được viết trong tệp .edc và biên dịch thành .edj.

Tizen Manifest (tizen-manifest.xml)

Tệp tizen-manifest.xml là cấu hình ứng dụng native. Nó chỉ định id (định danh duy nhất theo định dạng tên miền đảo ngược), package (tên gói), version, label (tên hiển thị), author, description. Đặc quyền khai báo quyền truy cập API: http://tizen.org/privilege/bluetooth, http://tizen.org/privilege/location, http://tizen.org/privilege/camera. Nếu không chỉ định đặc quyền, gọi API tương ứng sẽ dẫn đến lỗi SECURITY_ERR.

Ứng dụng web Tizen bằng HTML5 và JavaScript

Ứng dụng web Tizen là ứng dụng HTML5 được đóng gói ở định dạng .wgt (W3C Widget). Phát triển giống như tạo trang web thông thường, nhưng có thêm quyền truy cập vào Tizen Device API qua đối tượng tizen toàn cục. Ứng dụng web chạy trong tiến trình Web Runtime (WRT) riêng, dựa trên engine WebKit (Tizen 2.x-4.x) hoặc Chromium (Tizen 5.5+).

Cấu trúc ứng dụng web

Ứng dụng web chứa index.html (điểm vào), config.xml (Cấu hình Widget W3C), CSS, JavaScript, hình ảnh. Tệp config.xml tương tự manifest.webapp trong KaiOS: trường bắt buộc bao gồm widget (id, version, height/width cho đồng hồ), name, description, author. Quyền cho Device API được chỉ định qua phần tử tizen:privilege. Phần CSP (Content Security Policy) giới hạn nguồn tập lệnh.

javascript
// config.xml cho ứng dụng 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>Máy đo nhịp tim</name>
    <description>Đo nhịp tim trên 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>

Đoạn mã config.xml tối thiểu thể hiện các yếu tố chính: widget với id và phiên bản, tizen:application với hồ sơ wearable cho màn hình đồng hồ tròn, tizen:privilege cho healthinfo và sensor API, và Chính sách Bảo mật Nội dung giới hạn tải nội dung chỉ từ gói ứng dụng.

javascript
// Ứng dụng web Tizen Watch: theo dõi nhịp tim
const HeartRateMonitor = {
    hrSensor: null,
    isMonitoring: false,

    async init() {
        try {
            // Kiểm tra hỗ trợ cảm biến HRM
            const sensors = tizen.sensorservice.getAvailableSensors();
            if (!sensors.includes('HRM')) {
                throw new Error('Không tìm thấy cảm biến HRM');
            }

            // Lấy quyền truy cập cảm biến nhịp tim
            this.hrSensor = tizen.sensorservice.getDefaultSensor('HRM');
            console.log('Cảm biến HRM đã được khởi tạo');
        } catch (err) {
            console.error('Lỗi khởi tạo:', err.message);
        }
    },

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

        this.isMonitoring = true;
        this.hrSensor.startSensor({
            interval: 1000,  // đo mỗi giây
            callback: {
                onsuccess: (data) => {
                    const heartRate = data.heartRate;
                    document.getElementById('hr-value').textContent = heartRate;
                    this.updateDisplay(heartRate);
                },
                onerror: (err) => {
                    console.error('Lỗi cảm biến:', err.message);
                }
            }
        });
    },

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

    updateDisplay(heartRate) {
        // Hiển thị nhịp tim trên màn hình tròn 360x360
        const canvas = document.getElementById('hr-canvas');
        const ctx = canvas.getContext('2d');
        ctx.clearRect(0, 0, 360, 360);

        // Chỉ báo nhịp tim hình tròn
        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();
    });
});

Ứng dụng HeartRateMonitor sử dụng Tizen Sensor API để truy cập cảm biến HRM của Galaxy Watch. tizen.sensorservice.getDefaultSensor('HRM') lấy cảm biến nhịp tim, startSensor bắt đầu đo với khoảng thời gian 1 giây. Canvas 360×360 vẽ chỉ báo hình tròn — mô hình UI điển hình cho màn hình đồng hồ Tizen tròn.

Phát triển Tizen Watch: Circle UI và Rotary

Tizen Watch có các tính năng UI độc đáo: màn hình tròn (360×360 pixel trên Galaxy Watch), vòng xoay vật lý (rotary bezel) để điều hướng và ba nút cứng: Home, Back, Custom. Nhà phát triển phải thích ứng giao diện cho khu vực tròn — các phần tử góc có thể bị cắt. Circle UI là thư viện Samsung với các thành phần có sẵn cho màn hình tròn.

Rotary Bezel

Rotary Bezel — vòng vật lý quanh màn hình Galaxy Watch xoay để điều hướng danh sách, điều chỉnh âm lượng và thu phóng. Trong Tizen, sự kiện xoay được xử lý qua rotarydetector hoặc tín hiệu edge EFL. Mỗi khấc của vòng tạo ra sự kiện với góc xoay (0-360 độ). Ứng dụng web xử lý vòng xoay qua API rotarydetector: tizen.rotarydetector.

javascript
// Xử lý Rotary Bezel trong Tizen Watch
class RotaryNavigation {
    constructor() {
        this.currentAngle = 0;
        this.sections = document.querySelectorAll('.rotary-section');
        this.currentSection = 0;
        this.init();
    }

    init() {
        // Đăng ký sự kiện xoay vòng
        const detector = tizen.rotarydetector;

        detector.addEventListener('rotarydetector', (event) => {
            // event.angle — góc hiện tại (0-360)
            // event.direction — 'cw' (theo chiều kim đồng hồ) hoặc 'ccw' (ngược chiều kim đồng hồ)
            this.handleRotation(event);
        });

        // Kích hoạt rotarydetector
        detector.start();
    }

    handleRotation(event) {
        const delta = event.delta;  // thay đổi góc
        this.currentAngle += delta;

        // Xác định hướng và chuyển động
        if (delta > 0) {
            // Xoay theo chiều kim đồng hồ — phần tử tiếp theo
            this.currentSection = Math.min(this.currentSection + 1, this.sections.length - 1);
        } else {
            // Xoay ngược chiều kim đồng hồ — phần tử trước đó
            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();
    }
}

// Khởi tạo khi tải ứng dụng
document.addEventListener('tizen-rotary-ready', () => {
    const nav = new RotaryNavigation();
});

Lớp RotaryNavigation đăng ký sự kiện rotarydetector qua tizen.rotarydetector.addEventListener. Khi vòng xoay được xoay, hướng (cw/ccw) và delta góc được tính toán. Phần hiện tại được tô sáng bằng lớp active. rotarydetector.start() là bắt buộc — nếu không có nó, sự kiện không được tạo. destroy() hủy đăng ký và dừng bộ dò để ngăn rò rỉ bộ nhớ.

Tính năng UI cho đồng hồ

Giao diện Tizen Watch sử dụng các thành phần: RotarySelector(danh sách tròn điều khiển bằng vòng xoay), CircularList(danh sách cuộn tròn), RadialMenu(menu hình nan quạt với biểu tượng xếp thành vòng tròn), EdgePanel(bảng trượt từ cạnh màn hình), CircleProgressBar(chỉ báo tiến trình hình tròn). Tất cả thành phần được tối ưu cho độ phân giải 360×360 và tính đến việc không có góc màn hình. Kích thước mục tiêu chạm tối thiểu là 48 pixel.

Phát triển Tizen TV: ứng dụng cho Smart TV

Tizen TV — nền tảng cho Samsung Smart TV với SDK và trình giả lập riêng. Ứng dụng TV chia làm hai loại: ứng dụng web (HTML5/JS) và ứng dụng native (C/C++). Ứng dụng web cho TV phát triển nhanh hơn và dễ hơn, nhưng ứng dụng native cung cấp hiệu suất tốt hơn cho video và game. Tizen TV sử dụng điều khiển từ xa với D-pad để điều hướng.

AVPlay API cho video

AVPlay API — API chính của Tizen TV để phát video. Hỗ trợ định dạng H.264, H.265 (HEVC), VP9, AV1. Độ phân giải lên đến 8K trên TV 2024+. AVPlay API cung cấp giải mã phần cứng, HDR10+, Dolby Atmos, phụ đề và nhiều luồng âm thanh. Điều khiển qua play(), pause(), stop(), seekTo(position), setDisplayRect(). Luồng có thể là tệp cục bộ hoặc URL HLS/DASH.

javascript
// Trình phát video cho Tizen TV với AVPlay API
class TizenVideoPlayer {
    constructor(videoElementId) {
        this.videoElement = document.getElementById(videoElementId);
        this.avplay = null;
        this.isReady = false;
    }

    async init(url) {
        try {
            // Kiểm tra khả dụng của AVPlay
            if (typeof webapis === 'undefined' ||
                !webapis.avplay) {
                throw new Error('AVPlay API không khả dụng');
            }

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

            // Đặt hiển thị toàn màn hình TV
            this.avplay.setDisplayRect(0, 0, 3840, 2160);
            this.avplay.setDisplayMethod(webapis.avplay.AVPLAY_DISPLAY_METHOD_PLAYER);

            // Cấu hình âm thanh (Dolby Atmos, nếu được hỗ trợ)
            this.avplay.setStreamingProperty('ADAPTIVE_INFO', JSON.stringify({
                width: 3840,
                height: 2160,
                bitrate: 25000000
            }));

            this.avplay.prepareAsync(
                () => {
                    this.isReady = true;
                    console.log('Video sẵn sàng để phát');
                },
                (error) => {
                    console.error('Lỗi chuẩn bị:', error);
                }
            );
        } catch (err) {
            console.error('Lỗi khởi tạo:', 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'
        }));
    }
}

// Sử dụng
const player = new TizenVideoPlayer('video-area');
player.init('https://example.com/stream.m3u8');
player.setSubtitle('https://example.com/subs.vtt', 'UTF-8');

Lớp TizenVideoPlayer minh họa làm việc với AVPlay API. webapis.avplay.open() mở luồng phương tiện (cục bộ hoặc HLS/DASH). setDisplayRect đặt vùng kết xuất — trên TV thường là toàn màn hình ở 3840×2160. prepareAsync là chuẩn bị bất đồng bộ với callback. AVPlay hỗ trợ tốc độ bit thích ứng qua ADAPTIVE_INFO và phụ đề qua thuộc tính SUBTITLE.

Galaxy Store và xuất bản ứng dụng

Samsung Galaxy Store — cửa hàng ứng dụng chính thức cho Tizen (đồng hồ, TV, IoT). Đăng ký nhà phát triển miễn phí qua chương trình Samsung Developers. Nhà phát triển tải lên ứng dụng định dạng .tpk (native) hoặc .wgt (web), được ký bằng chứng chỉ Samsung. Kiểm duyệt mất 2-5 ngày làm việc. Galaxy Store có mặt tại 190 quốc gia.

Ký ứng dụng

Tizen yêu cầu chữ ký số cho ứng dụng bằng chứng chỉ Samsung. Quy trình: tạo Chứng chỉ Tác giả qua Samsung Certificate Manager, tạo Chứng chỉ Nhà phân phối cho cửa hàng, ký gói qua Tizen Studio (Build Signed Package). Chứng chỉ được liên kết với tài khoản nhà phát triển. Nếu không có chữ ký, ứng dụng chỉ có thể cài đặt trên thiết bị dev đã bật Chế độ nhà phát triển.

Mô hình kiếm tiền

Galaxy Store hỗ trợ ứng dụng trả phí (hoa hồng 30% trên 10.000$ đầu tiên, sau đó 25%), đăng ký (25%), quảng cáo qua Samsung Ads và mua hàng trong ứng dụng qua Samsung IAP. Cho ứng dụng TV, có sẵn mô hình Smart TV Premium Channels. Giá tối thiểu là 0,99$. Thanh toán hàng tháng khi đạt ngưỡng 100$.

Yêu cầuNative (.tpk)Web (.wgt)
Ngôn ngữC/C++HTML5, CSS, JS
Framework UIEFL, DALi, Tizen Circle UICircle UI (JS)
Truy cập APIToàn bộ hệ thốngDevice API
Hiệu suấtTối đaThấp hơn (Web Runtime)
Kích thước góiLên đến 100 MBLên đến 10 MB
Mẫu khởi đầuTizen Native AppTizen Web App

Câu hỏi thường gặp

Những ngôn ngữ nào được sử dụng để phát triển Tizen?

Ứng dụng native được viết bằng C/C++ sử dụng EFL hoặc DALi cho UI. Ứng dụng web sử dụng HTML5, CSS và JavaScript với Tizen Device API. Cho Tizen TV, có sẵn phát triển bằng .NET (C#) qua Tizen .NET. Samsung khuyến nghị C++ cho ứng dụng hiệu suất cao và JavaScript cho giao diện đơn giản.

Tizen khác Wear OS như thế nào?

Tizen sử dụng framework C/C++ riêng được tối ưu cho phần cứng Samsung. Wear OS dựa trên Android với Kotlin/Java. Tizen tiêu thụ ít hơn 30% năng lượng trên cùng phần cứng, nhưng có ít ứng dụng hơn trong cửa hàng. Từ 2021, Samsung chuyển sang Wear OS trên đồng hồ mới, nhưng Tizen vẫn được hỗ trợ.

Làm thế nào để tạo ứng dụng web cho Tizen TV?

Ứng dụng web cho Tizen TV được tạo bằng HTML5/JavaScript với Tizen Device API. Phát triển trong Tizen Studio với trình giả lập TV. Ứng dụng được đóng gói thành gói .wgt. API chính: AVPlay (video), TVInfoDevice (thông số TV), TVInputDevice (điều khiển từ xa), WebAudio (âm thanh). Điều hướng qua D-pad của điều khiển.

Rotary Bezel trong Tizen là gì?

Rotary Bezel — vòng xoay vật lý quanh màn hình Galaxy Watch để điều hướng. Sự kiện được xử lý qua API tizen.rotarydetector. Mỗi khấc tạo sự kiện với góc xoay và hướng (cw/ccw). Rotary Bezel được sử dụng để cuộn danh sách, điều chỉnh âm lượng, thu phóng và điều hướng menu.

Làm thế nào để xuất bản ứng dụng Tizen?

Xuất bản qua Samsung Galaxy Store. Đăng ký nhà phát triển miễn phí. Ứng dụng (định dạng .tpk hoặc .wgt) được ký bằng chứng chỉ Samsung. Kiểm duyệt 2-5 ngày. Hoa hồng 30% trên 10.000$ doanh thu đầu tiên, sau đó 25%. Giá tối thiểu 0,99$. Thanh toán hàng tháng từ 100$.

Tổng kết

  • Tizen — HĐH mã nguồn mở của Samsung trên nhân Linux cho đồng hồ, TV, IoT và thiết bị gia dụng với hỗ trợ ứng dụng native và web
  • Ứng dụng native (C/C++, EFL/DALi, định dạng .tpk) cung cấp hiệu suất tối đa và toàn quyền truy cập phần cứng
  • Ứng dụng web (HTML5/JS, định dạng .wgt, Web Runtime dựa trên Chromium) — phát triển nhanh với Device API
  • Tizen Watch sử dụng màn hình tròn 360×360, Rotary Bezel, Circle UI và thành phần RotarySelector/CircularList
  • Tizen TV sử dụng AVPlay API để giải mã phần cứng H.264/H.265/VP9 lên đến 8K, HDR10+, Dolby Atmos
  • Galaxy Store — đăng ký miễn phí, định dạng .tpk/.wgt, ký chứng chỉ Samsung, kiểm duyệt 2-5 ngày
  • Tizen Studio — SDK dựa trên VS Code với trình giả lập đồng hồ và TV, profiler và debugger

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm