CINXE.COM

เฟรมเวิร์กอินพุตทีวี  |  Android Open Source Project

<!doctype html> <html lang="th-x-mtfrom-en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email"> <meta property="og:site_name" content="Android Open Source Project"> <meta property="og:type" content="website"><meta name="googlebot" content="noindex"><meta name="theme-color" content="#34a853"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/androidsource/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.cn" crossorigin> <link rel="preconnect" href="//fonts.gstatic.cn" crossorigin> <link rel="preconnect" href="//fonts.googleapis.cn" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.cn/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.cn/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="//fonts.googleapis.com/earlyaccess/notosansthai.css"><link rel="stylesheet" href="https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/images/favicon.png"> <link rel="apple-touch-icon" href="https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/images/touchicon-180.png"><link rel="canonical" href="https://source.android.google.cn/docs/devices/tv?hl=th"> <link rel="alternate" hreflang="en-cn" href="https://source.android.google.cn/docs/devices/tv" /><link rel="alternate" hreflang="x-default" href="https://source.android.google.cn/docs/devices/tv" /><link rel="alternate" hreflang="ar-cn" href="https://source.android.google.cn/docs/devices/tv?hl=ar" /><link rel="alternate" hreflang="bn-cn" href="https://source.android.google.cn/docs/devices/tv?hl=bn" /><link rel="alternate" hreflang="zh-Hans-cn" href="https://source.android.google.cn/docs/devices/tv?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant-cn" href="https://source.android.google.cn/docs/devices/tv?hl=zh-tw" /><link rel="alternate" hreflang="fa-cn" href="https://source.android.google.cn/docs/devices/tv?hl=fa" /><link rel="alternate" hreflang="fr-cn" href="https://source.android.google.cn/docs/devices/tv?hl=fr" /><link rel="alternate" hreflang="de-cn" href="https://source.android.google.cn/docs/devices/tv?hl=de" /><link rel="alternate" hreflang="he-cn" href="https://source.android.google.cn/docs/devices/tv?hl=he" /><link rel="alternate" hreflang="hi-cn" href="https://source.android.google.cn/docs/devices/tv?hl=hi" /><link rel="alternate" hreflang="id-cn" href="https://source.android.google.cn/docs/devices/tv?hl=id" /><link rel="alternate" hreflang="it-cn" href="https://source.android.google.cn/docs/devices/tv?hl=it" /><link rel="alternate" hreflang="ja-cn" href="https://source.android.google.cn/docs/devices/tv?hl=ja" /><link rel="alternate" hreflang="ko-cn" href="https://source.android.google.cn/docs/devices/tv?hl=ko" /><link rel="alternate" hreflang="pl-cn" href="https://source.android.google.cn/docs/devices/tv?hl=pl" /><link rel="alternate" hreflang="pt-BR-cn" href="https://source.android.google.cn/docs/devices/tv?hl=pt-br" /><link rel="alternate" hreflang="pt-cn" href="https://source.android.google.cn/docs/devices/tv?hl=pt" /><link rel="alternate" hreflang="ru-cn" href="https://source.android.google.cn/docs/devices/tv?hl=ru" /><link rel="alternate" hreflang="es-cn" href="https://source.android.google.cn/docs/devices/tv?hl=es" /><link rel="alternate" hreflang="es-419-cn" href="https://source.android.google.cn/docs/devices/tv?hl=es-419" /><link rel="alternate" hreflang="th-cn" href="https://source.android.google.cn/docs/devices/tv?hl=th" /><link rel="alternate" hreflang="tr-cn" href="https://source.android.google.cn/docs/devices/tv?hl=tr" /><link rel="alternate" hreflang="vi-cn" href="https://source.android.google.cn/docs/devices/tv?hl=vi" /><link rel="alternate" hreflang="en" href="https://source.android.com/docs/devices/tv" /><link rel="alternate" hreflang="x-default" href="https://source.android.com/docs/devices/tv" /><link rel="alternate" hreflang="ar" href="https://source.android.com/docs/devices/tv?hl=ar" /><link rel="alternate" hreflang="bn" href="https://source.android.com/docs/devices/tv?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://source.android.com/docs/devices/tv?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://source.android.com/docs/devices/tv?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://source.android.com/docs/devices/tv?hl=fa" /><link rel="alternate" hreflang="fr" href="https://source.android.com/docs/devices/tv?hl=fr" /><link rel="alternate" hreflang="de" href="https://source.android.com/docs/devices/tv?hl=de" /><link rel="alternate" hreflang="he" href="https://source.android.com/docs/devices/tv?hl=he" /><link rel="alternate" hreflang="hi" href="https://source.android.com/docs/devices/tv?hl=hi" /><link rel="alternate" hreflang="id" href="https://source.android.com/docs/devices/tv?hl=id" /><link rel="alternate" hreflang="it" href="https://source.android.com/docs/devices/tv?hl=it" /><link rel="alternate" hreflang="ja" href="https://source.android.com/docs/devices/tv?hl=ja" /><link rel="alternate" hreflang="ko" href="https://source.android.com/docs/devices/tv?hl=ko" /><link rel="alternate" hreflang="pl" href="https://source.android.com/docs/devices/tv?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://source.android.com/docs/devices/tv?hl=pt-br" /><link rel="alternate" hreflang="pt" href="https://source.android.com/docs/devices/tv?hl=pt" /><link rel="alternate" hreflang="ru" href="https://source.android.com/docs/devices/tv?hl=ru" /><link rel="alternate" hreflang="es" href="https://source.android.com/docs/devices/tv?hl=es" /><link rel="alternate" hreflang="es-419" href="https://source.android.com/docs/devices/tv?hl=es-419" /><link rel="alternate" hreflang="th" href="https://source.android.com/docs/devices/tv?hl=th" /><link rel="alternate" hreflang="tr" href="https://source.android.com/docs/devices/tv?hl=tr" /><link rel="alternate" hreflang="vi" href="https://source.android.com/docs/devices/tv?hl=vi" /><title>เฟรมเวิร์กอินพุตทีวี &nbsp;|&nbsp; Android Open Source Project</title> <meta property="og:title" content="เฟรมเวิร์กอินพุตทีวี &nbsp;|&nbsp; Android Open Source Project"><meta property="og:url" content="https://source.android.google.cn/docs/devices/tv?hl=th"><meta property="og:locale" content="th"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "เฟรมเวิร์กอินพุตทีวี" } </script><link rel="alternate machine-translated-from" hreflang="en" href="https://source.android.google.cn/docs/devices/tv?hl=en"> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="androidsource-theme" type="article" layout="docs" block-apix display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <a href="#main-content" class="skip-link button"> Skip to main content </a> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner" keep-tabs-visible> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="เปิดเมนู"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidOpenSourceProject" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/images/lockup.svg" class="devsite-site-logo" alt="Android Open Source Project"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="แท็บระดับบน"> <tab class="devsite-dropdown devsite-active "> <a href="https://source.android.google.cn/docs?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs?hl=th" track-type="nav" track-metadata-position="nav - เอกสาร" track-metadata-module="primary nav" aria-label="เอกสาร, selected" data-category="Site-Wide Custom Events" data-label="Tab: เอกสาร" track-name="เอกสาร" > เอกสาร </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="เมนูแบบเลื่อนลงสำหรับ เอกสาร" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: เอกสาร" track-name="เอกสาร" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-source-tabs-dropdown-column-small"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>มีอะไรใหม่</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/whatsnew/release-notes?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/whatsnew/release-notes?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> บันทึกประจำรุ่น </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/whatsnew/latest-security-bulletins?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/whatsnew/latest-security-bulletins?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> กระดานข่าวสารด้านความปลอดภัยล่าสุด </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/whatsnew/latest-cdd?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/whatsnew/latest-cdd?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> เอกสารข้อกำหนดความเข้ากันได้ล่าสุด (CDD) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/whatsnew/site-updates?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/whatsnew/site-updates?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> การอัปเดตเว็บไซต์ </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>เริ่มต้นใช้งาน</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/about?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/about?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> เกี่ยวกับ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/start?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/start?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> เริ่ม </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/download?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/download?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> ดาวน์โหลด </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/build?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/build?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> บิลด์ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/test?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/test?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> ทดสอบ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/create/coding-tasks?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/create/coding-tasks?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> สร้าง </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/contribute?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/contribute?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> มีส่วนร่วม </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/community/cofc?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/community/cofc?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> ชุมชน </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/setup/reference?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/setup/reference?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> เครื่องมือ บิลด์ และข้อมูลอ้างอิงที่เกี่ยวข้อง </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>ความปลอดภัย</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/security/overview?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/security/overview?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> ภาพรวม </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/security/bulletin?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/security/bulletin?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> กระดานข่าวสาร </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/security/features?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/security/features?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> ฟีเจอร์ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/security/test/fuzz-sanitize?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/security/test/fuzz-sanitize?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> กำลังทดสอบ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/security/best-practices?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/security/best-practices?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="มีอะไรใหม่" tooltip > <div class="devsite-nav-item-title"> แนวทางปฏิบัติแนะนำ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-source-tabs-dropdown-column-small"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>หัวข้อหลัก</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/architecture?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/architecture?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> สถาปัตยกรรม </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/audio?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/audio?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> เสียง </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/camera?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/camera?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> กล้องถ่ายรูป </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/connect?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/connect?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> การเชื่อมต่อ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/data?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/data?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> ข้อมูล </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/display?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/display?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> ดิสเพลย์ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/fonts/custom-font-fallback?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/fonts/custom-font-fallback?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> แบบอักษร </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/graphics?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/graphics?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> กราฟิก </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/interaction?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/interaction?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> การโต้ตอบ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/media?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/media?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> สื่อ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/perf?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/perf?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> ประสิทธิภาพ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/permissions?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/permissions?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> สิทธิ์ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/power?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/power?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> พาวเวอร์ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/runtime?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/runtime?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> รันไทม์ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/settings?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/settings?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> การตั้งค่า </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/storage?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/storage?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> Storage </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/tests?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/tests?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> การทดสอบ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/ota?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/ota?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> การอัปเดต </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/core/virtualization?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/core/virtualization?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="หัวข้อหลัก" tooltip > <div class="devsite-nav-item-title"> ระบบเสมือน </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-source-tabs-dropdown-column-small"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>ความเข้ากันได้</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/compatibility/cdd?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/compatibility/cdd?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> เอกสารคำจำกัดความความเข้ากันได้ (CDD) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/compatibility/cts?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/compatibility/cts?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>อุปกรณ์ Android</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/devices/cuttlefish?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/devices/cuttlefish?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> หมึกกระดอง </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/devices/admin?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/devices/admin?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> องค์กร </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/devices/tv?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/devices/tv?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> ทีวี </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>ยานยนต์</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/automotive/start/what_automotive?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/automotive/start/what_automotive?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> เริ่มต้น </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/automotive/guidelines?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/automotive/guidelines?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> หลักเกณฑ์สำหรับการพัฒนา </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/automotive/dev-tools?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/automotive/dev-tools?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> เครื่องมือสำหรับการพัฒนา </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/automotive/tools?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/automotive/tools?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> เครื่องมือทดสอบและโครงสร้างพื้นฐาน </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/docs/automotive/start/releases?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/docs/automotive/start/releases?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> รายละเอียดของรุ่น </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>ข้อมูลอ้างอิง</li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/reference/hidl?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/reference/hidl?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> แบบ HIDL </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/reference/hal?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/reference/hal?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> HAL </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/reference/tradefed/classes?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/reference/tradefed/classes?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> สหพันธ์การค้า </div> </a> </li> <li class="devsite-nav-item"> <a href="https://source.android.google.cn/reference/sts/classes?hl=th" track-type="nav" track-metadata-eventdetail="https://source.android.google.cn/reference/sts/classes?hl=th" track-metadata-position="nav - เอกสาร" track-metadata-module="tertiary nav" track-metadata-module_headline="ความเข้ากันได้" tooltip > <div class="devsite-nav-item-title"> ชุดทดสอบความปลอดภัย </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://cs.android.com/android/platform/superproject/main?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://cs.android.com/android/platform/superproject/main?hl=th" track-type="nav" track-metadata-position="nav - การค้นหาโค้ด android" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: การค้นหาโค้ด Android" track-name="การค้นหาโค้ด android" > การค้นหาโค้ด Android </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-suggestions project-name="Android Open Source Project" tenant-name="Android Open Source Project" > <form class="devsite-search-form" action="https://source.android.google.cn/s/results?hl=th" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="เปิดการค้นหา"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="ค้นหา" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="ค้นหา" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="ปิดการค้นหา"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://source.android.google.cn/docs?hl=th" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > เอกสารประกอบ </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="แท็บระดับล่าง"> <tab > <a href="https://source.android.google.cn/docs/whatsnew?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs/whatsnew?hl=th" track-type="nav" track-metadata-position="nav - มีอะไรใหม่" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: มีอะไรใหม่" track-name="มีอะไรใหม่" > มีอะไรใหม่ </a> </tab> <tab > <a href="https://source.android.google.cn/docs/setup?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs/setup?hl=th" track-type="nav" track-metadata-position="nav - เริ่มต้นใช้งาน" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: เริ่มต้นใช้งาน" track-name="เริ่มต้นใช้งาน" > เริ่มต้นใช้งาน </a> </tab> <tab > <a href="https://source.android.google.cn/docs/security?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs/security?hl=th" track-type="nav" track-metadata-position="nav - ความปลอดภัย" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: ความปลอดภัย" track-name="ความปลอดภัย" > ความปลอดภัย </a> </tab> <tab > <a href="https://source.android.google.cn/docs/core?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs/core?hl=th" track-type="nav" track-metadata-position="nav - หัวข้อหลัก" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: หัวข้อหลัก" track-name="หัวข้อหลัก" > หัวข้อหลัก </a> </tab> <tab > <a href="https://source.android.google.cn/docs/compatibility?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs/compatibility?hl=th" track-type="nav" track-metadata-position="nav - ความเข้ากันได้" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: ความเข้ากันได้" track-name="ความเข้ากันได้" > ความเข้ากันได้ </a> </tab> <tab class="devsite-active"> <a href="https://source.android.google.cn/docs/devices?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs/devices?hl=th" track-type="nav" track-metadata-position="nav - อุปกรณ์ android" track-metadata-module="primary nav" aria-label="อุปกรณ์ Android, selected" data-category="Site-Wide Custom Events" data-label="Tab: อุปกรณ์ Android" track-name="อุปกรณ์ android" > อุปกรณ์ Android </a> </tab> <tab > <a href="https://source.android.google.cn/docs/automotive?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/docs/automotive?hl=th" track-type="nav" track-metadata-position="nav - ยานยนต์" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: ยานยนต์" track-name="ยานยนต์" > ยานยนต์ </a> </tab> <tab > <a href="https://source.android.google.cn/reference?hl=th" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://source.android.google.cn/reference?hl=th" track-type="nav" track-metadata-position="nav - ข้อมูลอ้างอิง" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: ข้อมูลอ้างอิง" track-name="ข้อมูลอ้างอิง" > ข้อมูลอ้างอิง </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="ตัวกรอง" aria-label="พิมพ์เพื่อกรอง" role="searchbox"> <span class="filter-clear-button hidden" data-title="ล้างตัวกรอง" aria-label="ล้างตัวกรอง" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="เมนูด้านข้าง"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="ปิดการนำทาง"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidOpenSourceProject" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/images/lockup.svg" class="devsite-site-logo" alt="Android Open Source Project"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/docs" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: เอกสาร" track-name="เอกสาร" data-category="Site-Wide Custom Events" data-label="Responsive Tab: เอกสาร" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เอกสาร </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: เอกสาร" track-name="เอกสาร" > <span class="devsite-nav-text" tooltip menu="เอกสาร"> เพิ่มเติม </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="เอกสาร"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/docs/whatsnew" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: มีอะไรใหม่" track-name="มีอะไรใหม่" data-category="Site-Wide Custom Events" data-label="Responsive Tab: มีอะไรใหม่" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > มีอะไรใหม่ </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: เริ่มต้นใช้งาน" track-name="เริ่มต้นใช้งาน" data-category="Site-Wide Custom Events" data-label="Responsive Tab: เริ่มต้นใช้งาน" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เริ่มต้นใช้งาน </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/security" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: ความปลอดภัย" track-name="ความปลอดภัย" data-category="Site-Wide Custom Events" data-label="Responsive Tab: ความปลอดภัย" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ความปลอดภัย </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: หัวข้อหลัก" track-name="หัวข้อหลัก" data-category="Site-Wide Custom Events" data-label="Responsive Tab: หัวข้อหลัก" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > หัวข้อหลัก </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/compatibility" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: ความเข้ากันได้" track-name="ความเข้ากันได้" data-category="Site-Wide Custom Events" data-label="Responsive Tab: ความเข้ากันได้" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ความเข้ากันได้ </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/devices" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: อุปกรณ์ Android" track-name="อุปกรณ์ android" data-category="Site-Wide Custom Events" data-label="Responsive Tab: อุปกรณ์ Android" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> อุปกรณ์ Android </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/automotive" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: ยานยนต์" track-name="ยานยนต์" data-category="Site-Wide Custom Events" data-label="Responsive Tab: ยานยนต์" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ยานยนต์ </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: ข้อมูลอ้างอิง" track-name="ข้อมูลอ้างอิง" data-category="Site-Wide Custom Events" data-label="Responsive Tab: ข้อมูลอ้างอิง" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ข้อมูลอ้างอิง </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="https://cs.android.com/android/platform/superproject/main" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: การค้นหาโค้ด Android" track-name="การค้นหาโค้ด android" data-category="Site-Wide Custom Events" data-label="Responsive Tab: การค้นหาโค้ด Android" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > การค้นหาโค้ด Android </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/docs/devices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices" ><span class="devsite-nav-text" tooltip>ภาพรวม</span></a></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>หมึกกระดอง</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish" ><span class="devsite-nav-text" tooltip>ภาพรวม</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>ข้อมูลเบื้องต้น</span> </div></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/get-started" ><span class="devsite-nav-text" tooltip>เริ่มใช้งาน</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/restart" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/restart" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/restart" ><span class="devsite-nav-text" tooltip>รีสตาร์ทและรีเซ็ต</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/devices/cuttlefish/snapshot-restore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/snapshot-restore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/snapshot-restore" ><span class="devsite-nav-text" tooltip>สร้างสแนปชอตและคืนค่า</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="ใหม่!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/gpu" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/gpu" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/gpu" ><span class="devsite-nav-text" tooltip>การเร่งกราฟิก GPU</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/control-panel" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/control-panel" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/control-panel" ><span class="devsite-nav-text" tooltip>แผงควบคุม</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/webrtc" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/webrtc" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/webrtc" ><span class="devsite-nav-text" tooltip>สตรีมมิงด้วย WebRTC</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/cts" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/cts" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/cts" ><span class="devsite-nav-text" tooltip>ใช้ CTS เวอร์ชันเสถียร</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>รอบการเรียกใช้การแก้ไขคอมไพล์</span> </div></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/devices/cuttlefish/custom-device" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/custom-device" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/custom-device" ><span class="devsite-nav-text" tooltip>สร้างอุปกรณ์ที่กำหนดเอง</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="ใหม่!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/kernel-dev" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/kernel-dev" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/kernel-dev" ><span class="devsite-nav-text" tooltip>พัฒนาเคอร์เนลของ Android</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/bootloader-dev" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/bootloader-dev" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/bootloader-dev" ><span class="devsite-nav-text" tooltip>พัฒนาฟีเจอร์ Bootloader ของ Android</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>ฮาร์ดแวร์เสมือน</span> </div></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/display-hotplug" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/display-hotplug" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/display-hotplug" ><span class="devsite-nav-text" tooltip>จอแสดงผลปลั๊กไฟ</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/multi-display" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/multi-display" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/multi-display" ><span class="devsite-nav-text" tooltip>หลายจอภาพ</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/multi-tenancy" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/multi-tenancy" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/multi-tenancy" ><span class="devsite-nav-text" tooltip>กลุ่มผู้ใช้หลายกลุ่ม</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/control-environment" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/control-environment" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/control-environment" ><span class="devsite-nav-text" tooltip>การควบคุมสภาพแวดล้อม</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/connectivity" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/connectivity" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/connectivity" ><span class="devsite-nav-text" tooltip>ทดสอบการเชื่อมต่อของอุปกรณ์หลายเครื่อง</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/wifi" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/wifi" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/wifi" ><span class="devsite-nav-text" tooltip>Wi-Fi</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/cuttlefish/bluetooth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/bluetooth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/bluetooth" ><span class="devsite-nav-text" tooltip>บลูทูธ</span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/devices/cuttlefish/nfc" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/nfc" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/nfc" ><span class="devsite-nav-text" tooltip>NFC</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="ใหม่!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>อุปกรณ์แบบผสมของ Cuttlefish</span> </div></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/devices/cuttlefish/create-chd" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/create-chd" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/create-chd" ><span class="devsite-nav-text" tooltip>สร้างอุปกรณ์แบบผสม Cuttlefish</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="ใหม่!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/docs/devices/cuttlefish/on-premises" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/cuttlefish/on-premises" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/cuttlefish/on-premises" ><span class="devsite-nav-text" tooltip>เรียกใช้ Cuttlefish ในเซิร์ฟเวอร์ที่ติดตั้งในองค์กร</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="ใหม่!" aria-hidden="true"></span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>องค์กร</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/devices/admin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin" ><span class="devsite-nav-text" tooltip>ภาพรวมการจัดการอุปกรณ์</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/implement" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/implement" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/implement" ><span class="devsite-nav-text" tooltip>การจัดการอุปกรณ์</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/device-policy-resolution" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/device-policy-resolution" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/device-policy-resolution" ><span class="devsite-nav-text" tooltip>กรอบการแก้ปัญหาเกี่ยวกับนโยบายด้านอุปกรณ์</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/multi-user" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/multi-user" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/multi-user" ><span class="devsite-nav-text" tooltip>รองรับผู้ใช้หลายคน</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/custom-user-types" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/custom-user-types" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/custom-user-types" ><span class="devsite-nav-text" tooltip>ใช้ประเภทผู้ใช้ที่กำหนดเอง</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/multi-user-testing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/multi-user-testing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/multi-user-testing" ><span class="devsite-nav-text" tooltip>ทดสอบผู้ใช้หลายคน</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/managed-profiles" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/managed-profiles" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/managed-profiles" ><span class="devsite-nav-text" tooltip>โปรไฟล์งาน</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/provision" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/provision" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/provision" ><span class="devsite-nav-text" tooltip>การจัดสรรสําหรับการจัดการอุปกรณ์</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/multiuser-apps" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/multiuser-apps" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/multiuser-apps" ><span class="devsite-nav-text" tooltip>แอปหลายผู้ใช้</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/enterprise-telephony" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/enterprise-telephony" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/enterprise-telephony" ><span class="devsite-nav-text" tooltip>โทรศัพท์ขององค์กร</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/testing-setup" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/testing-setup" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/testing-setup" ><span class="devsite-nav-text" tooltip>ทดสอบการจัดการอุปกรณ์</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/admin/ota-updates" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/admin/ota-updates" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/admin/ota-updates" ><span class="devsite-nav-text" tooltip>การอัปเดต OTA ขององค์กร</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>ทีวี</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/docs/devices/tv" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/tv" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/tv" ><span class="devsite-nav-text" tooltip>ภาพรวม</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/tv/tuner-framework" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/tv/tuner-framework" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/tv/tuner-framework" ><span class="devsite-nav-text" tooltip>เฟรมเวิร์กตัวรับสัญญาณ</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/tv/media-cas" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/tv/media-cas" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/tv/media-cas" ><span class="devsite-nav-text" tooltip>เฟรมเวิร์ก CAS</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/tv/hdmi-cec" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/tv/hdmi-cec" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/tv/hdmi-cec" ><span class="devsite-nav-text" tooltip>บริการควบคุม HDMI-CEC</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/tv/multimedia-tunneling" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/tv/multimedia-tunneling" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/tv/multimedia-tunneling" ><span class="devsite-nav-text" tooltip>การสร้างอุโมงค์มัลติมีเดีย</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/tv/reference-tv-app" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/tv/reference-tv-app" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/tv/reference-tv-app" ><span class="devsite-nav-text" tooltip>อ้างอิงแอป TV</span></a></li><li class="devsite-nav-item"><a href="/docs/devices/tv/customize-tv-app" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/devices/tv/customize-tv-app" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/devices/tv/customize-tv-app" ><span class="devsite-nav-text" tooltip>ปรับแต่งแอป TV</span></a></li></ul></div></li> </ul> <ul class="devsite-nav-list" menu="เอกสาร" aria-label="เมนูด้านข้าง" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > มีอะไรใหม่ </span> </span> </li> <li class="devsite-nav-item"> <a href="/docs/whatsnew/release-notes" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: บันทึกประจำรุ่น" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > บันทึกประจำรุ่น </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/whatsnew/latest-security-bulletins" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: กระดานข่าวสารด้านความปลอดภัยล่าสุด" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > กระดานข่าวสารด้านความปลอดภัยล่าสุด </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/whatsnew/latest-cdd" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เอกสารข้อกำหนดความเข้ากันได้ล่าสุด (CDD)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เอกสารข้อกำหนดความเข้ากันได้ล่าสุด (CDD) </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/whatsnew/site-updates" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: การอัปเดตเว็บไซต์" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > การอัปเดตเว็บไซต์ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > เริ่มต้นใช้งาน </span> </span> </li> <li class="devsite-nav-item"> <a href="/docs/setup/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เกี่ยวกับ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เกี่ยวกับ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/start" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เริ่ม" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เริ่ม </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/download" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ดาวน์โหลด" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ดาวน์โหลด </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: บิลด์" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > บิลด์ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/test" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ทดสอบ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ทดสอบ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/create/coding-tasks" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: สร้าง" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > สร้าง </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/contribute" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: มีส่วนร่วม" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > มีส่วนร่วม </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/community/cofc" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ชุมชน" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ชุมชน </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/setup/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เครื่องมือ บิลด์ และข้อมูลอ้างอิงที่เกี่ยวข้อง" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เครื่องมือ บิลด์ และข้อมูลอ้างอิงที่เกี่ยวข้อง </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > ความปลอดภัย </span> </span> </li> <li class="devsite-nav-item"> <a href="/docs/security/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ภาพรวม" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ภาพรวม </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/security/bulletin" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: กระดานข่าวสาร" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > กระดานข่าวสาร </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/security/features" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ฟีเจอร์" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ฟีเจอร์ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/security/test/fuzz-sanitize" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: กำลังทดสอบ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > กำลังทดสอบ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/security/best-practices" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: แนวทางปฏิบัติแนะนำ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > แนวทางปฏิบัติแนะนำ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > หัวข้อหลัก </span> </span> </li> <li class="devsite-nav-item"> <a href="/docs/core/architecture" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: สถาปัตยกรรม" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > สถาปัตยกรรม </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/audio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เสียง" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เสียง </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/camera" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: กล้องถ่ายรูป" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > กล้องถ่ายรูป </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/connect" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: การเชื่อมต่อ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > การเชื่อมต่อ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/data" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ข้อมูล" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ข้อมูล </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/display" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ดิสเพลย์" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ดิสเพลย์ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/fonts/custom-font-fallback" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: แบบอักษร" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > แบบอักษร </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/graphics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: กราฟิก" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > กราฟิก </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/interaction" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: การโต้ตอบ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > การโต้ตอบ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/media" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: สื่อ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > สื่อ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/perf" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ประสิทธิภาพ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ประสิทธิภาพ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/permissions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: สิทธิ์" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > สิทธิ์ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/power" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: พาวเวอร์" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > พาวเวอร์ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/runtime" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: รันไทม์" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > รันไทม์ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/settings" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: การตั้งค่า" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > การตั้งค่า </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/storage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Storage" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Storage </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/tests" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: การทดสอบ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > การทดสอบ </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/ota" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: การอัปเดต" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > การอัปเดต </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/core/virtualization" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ระบบเสมือน" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ระบบเสมือน </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > ความเข้ากันได้ </span> </span> </li> <li class="devsite-nav-item"> <a href="/docs/compatibility/cdd" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เอกสารคำจำกัดความความเข้ากันได้ (CDD)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เอกสารคำจำกัดความความเข้ากันได้ (CDD) </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/compatibility/cts" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > อุปกรณ์ Android </span> </span> </li> <li class="devsite-nav-item"> <a href="/docs/devices/cuttlefish" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: หมึกกระดอง" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > หมึกกระดอง </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/devices/admin" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: องค์กร" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > องค์กร </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/devices/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ทีวี" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ทีวี </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > ยานยนต์ </span> </span> </li> <li class="devsite-nav-item"> <a href="/docs/automotive/start/what_automotive" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เริ่มต้น" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เริ่มต้น </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/automotive/guidelines" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: หลักเกณฑ์สำหรับการพัฒนา" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > หลักเกณฑ์สำหรับการพัฒนา </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/automotive/dev-tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เครื่องมือสำหรับการพัฒนา" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เครื่องมือสำหรับการพัฒนา </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/automotive/tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: เครื่องมือทดสอบและโครงสร้างพื้นฐาน" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > เครื่องมือทดสอบและโครงสร้างพื้นฐาน </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/automotive/start/releases" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: รายละเอียดของรุ่น" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > รายละเอียดของรุ่น </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > ข้อมูลอ้างอิง </span> </span> </li> <li class="devsite-nav-item"> <a href="/reference/hidl" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: แบบ HIDL" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > แบบ HIDL </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/hal" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: HAL" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > HAL </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/tradefed/classes" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: สหพันธ์การค้า" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > สหพันธ์การค้า </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/sts/classes" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ชุดทดสอบความปลอดภัย" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ชุดทดสอบความปลอดภัย </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" id="main-content" class="devsite-main-content" has-book-nav has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="ในหน้านี้" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"> <div class="devsite-banner devsite-banner-translated nocontent"> <div class="devsite-banner-message"> <div class="devsite-banner-message-text"> <img src="https://source.android.google.cn/_static/images/translated.svg?hl=th" class="devsite-banner-translated-image invert" alt=""> <span class="devsite-banner-translated-text"> หน้านี้ได้รับการแปลโดย <a href="//cloud.google.com/translate/?hl=th">Cloud Translation API</a> </span> </div> <devsite-switch-to-english-button></devsite-switch-to-english-button> </div> </div> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="เบรดครัมบ์"> <li class="devsite-breadcrumb-item "> <a href="https://source.android.google.cn/?hl=th" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Android Open Source Project" > AOSP </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://source.android.google.cn/docs?hl=th" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > เอกสาร </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://source.android.google.cn/docs/devices?hl=th" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="" > อุปกรณ์ Android </a> </li> </ul> </div> <h1 class="devsite-page-title" tabindex="-1"> เฟรมเวิร์กอินพุตทีวี </h1> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <!-- Copyright 2017 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <img alt="ไอคอน HAL ของ Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/ape_fwk_hal_tv.png?hl=th" style="float: right; margin: 0 15px 15px 15px;" /> <p>เฟรมเวิร์กอินพุต Android TV (TIF) ช่วยให้การส่งเนื้อหาสดไปยัง Android TV ง่ายขึ้น Android TIF มี API มาตรฐานสำหรับผู้ผลิตในการสร้างข้อบังคับของอินพุตสำหรับควบคุม Android TV และเปิดใช้การค้นหาและคำแนะนำรายการทีวีสดผ่านข้อมูลเมตาที่เผยแพร่โดยอินพุตทีวี</p> <p>เฟรมเวิร์กนี้ไม่ได้มีจุดประสงค์เพื่อนำมาตรฐานทีวีหรือข้อกำหนดระดับภูมิภาคมาใช้ แต่ช่วยให้ผู้ผลิตอุปกรณ์ปฏิบัติตามมาตรฐานการออกอากาศทีวีดิจิทัลระดับภูมิภาคได้ง่ายขึ้นโดยไม่ต้องติดตั้งใช้งานใหม่ เอกสารประกอบในส่วนนี้อาจเป็นประโยชน์ต่อนักพัฒนาแอปบุคคลที่สามที่ต้องการสร้างอินพุตทีวีที่กำหนดเองด้วย</p> <h2 data-text="คอมโพเนนต์" id="components" tabindex="-1">คอมโพเนนต์</h2> <p>การใช้งานเฟรมเวิร์กอินพุต Android TV ประกอบด้วยเครื่องมือจัดการอินพุตทีวี TIF ใช้งานได้กับแอปทีวี ซึ่งเป็นแอประบบที่ไม่สามารถแทนที่ด้วยแอปของบุคคลที่สามได้ เพื่อเข้าถึงช่องในตัวและช่องจากเครื่องรับสัญญาณ IP แอปทีวีจะสื่อสารกับโมดูลอินพุตทีวีที่ผู้ผลิตอุปกรณ์หรือบุคคลอื่นจัดหาให้ผ่านตัวจัดการอินพุตทีวี</p> <p>เฟรมเวิร์กอินพุตทีวีประกอบด้วยสิ่งต่อไปนี้</p> <ul> <li>ผู้ให้บริการทีวี (<code dir="ltr" translate="no">com.android.providers.tv.TvProvider</code>): ฐานข้อมูลของช่อง รายการ และสิทธิ์ที่เกี่ยวข้อง</li> <li>แอปทีวี (<code dir="ltr" translate="no">com.android.tv.TvActivity</code>): แอปที่จัดการการโต้ตอบของผู้ใช้</li> <li>ตัวจัดการอินพุตทีวี (<code dir="ltr" translate="no">android.media.tv.TvInputManager</code>): อนุญาตให้อินพุตทีวีสื่อสารกับแอปทีวี</li> <li>อินพุตทีวี: แอปที่แสดงตัวรับสัญญาณและพอร์ตอินพุตจริงหรือเสมือน</li> <li>HAL ของอินพุตทีวี (<code dir="ltr" translate="no">tv_input</code> โมดูล): การกําหนดฮาร์ดแวร์ที่อนุญาตให้อินพุตทีวีของระบบเข้าถึงฮาร์ดแวร์เฉพาะของทีวีเมื่อติดตั้งใช้งาน</li> <li>การควบคุมโดยผู้ปกครอง: เทคโนโลยีที่อนุญาตให้บล็อกช่องและรายการ</li> <li>HDMI-CEC: เทคโนโลยีที่ช่วยให้ควบคุมอุปกรณ์ต่างๆ ผ่าน HDMI จากระยะไกลได้</li> <li>เฟรมเวิร์กตัวรับสัญญาณ: เฟรมเวิร์กสำหรับอินพุตทีวีในตัว</li> <li>MediaCas: เฟรมเวิร์กสำหรับการเข้าถึงแบบมีเงื่อนไข</li> <li>ตัวจัดการทรัพยากรตัวรับสัญญาณ: บริการสำหรับจัดการทรัพยากรฮาร์ดแวร์สำหรับอินพุตทีวี, MediaCas และอินพุตตัวรับสัญญาณในตัว</li> </ul> <p>คอมโพเนนต์เหล่านี้มีรายละเอียดอยู่ด้านล่าง ดูภาพรายละเอียดของสถาปัตยกรรมเฟรมเวิร์กอินพุต Android TV ได้ในแผนภาพต่อไปนี้</p> <figure id="tif-architecture"> <img alt="ภาพรวมสถาปัตยกรรม TIF ของ Android" src="https://source.android.google.cn/static/docs/devices/tv/images/TIF_Overview.png?hl=th" /> <figcaption><strong>รูปที่ 1</strong> สถาปัตยกรรมของ Android TV Input Framework (TIF)</figcaption> </figure> <h2 data-text="น้ำไหล" id="flow" tabindex="-1">น้ำไหล</h2> <p>วิธีการทํางานของสถาปัตยกรรมมีดังนี้</p> <ol> <li>ผู้ใช้จะเห็นและโต้ตอบกับแอปทีวี ซึ่งเป็นแอประบบที่แอปของบุคคลที่สามไม่สามารถแทนที่</li> <li>แอปทีวีจะแสดงเนื้อหา AV จากอินพุตทีวี</li> <li>แอปทีวีไม่สามารถสื่อสารกับอินพุตทีวีโดยตรง เครื่องมือจัดการอินพุตทีวีจะระบุสถานะของอินพุตทีวีสำหรับแอปทีวี โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อจำกัดเหล่านี้ที่<em>เครื่องมือจัดการอินพุตทีวี</em>ด้านล่าง</li> </ol> <h2 data-text="สิทธิ์" id="permissions" tabindex="-1">สิทธิ์</h2> <ul> <li>เฉพาะ<code dir="ltr" translate="no"><a href="http://developer.android.google.cn/guide/topics/manifest/permission-element.html?hl=th#plevel">signatureOrSystem</a></code> อินพุตทีวีและแอปทีวีเท่านั้นที่มีสิทธิ์เข้าถึงฐานข้อมูลของผู้ให้บริการทีวีอย่างเต็มรูปแบบและสามารถรับ KeyEvent ได้ </li><li>เฉพาะอินพุตทีวีของระบบเท่านั้นที่เข้าถึง HAL ของอินพุตทีวีผ่านบริการตัวจัดการอินพุตทีวีได้ อินพุตทีวีจะมีการเข้าถึงแบบหนึ่งต่อหนึ่งผ่านเซสชันโปรแกรมจัดการอินพุตทีวี</li> <li>อินพุตทีวีของบุคคลที่สามมีสิทธิ์เข้าถึงฐานข้อมูลผู้ให้บริการทีวีแบบล็อกแพ็กเกจ และจะอ่าน/เขียนได้เฉพาะแถวแพ็กเกจที่ตรงกันเท่านั้น</li> <li>อินพุตทีวีของบุคคลที่สามอาจแสดงเนื้อหาของตนเองหรือเนื้อหาจากอินพุตทีวี Passthrough ของผู้ผลิตอุปกรณ์ เช่น HDMI1 แต่จะแสดงเนื้อหาจากอินพุตทีวีที่ไม่ใช่การส่งผ่านไม่ได้ เช่น กล่องรับสัญญาณในตัวหรือ IPTV</li> <li>สิทธิ์ <code dir="ltr" translate="no">TV_INPUT_HARDWARE</code> สําหรับแอปอินพุตทีวีฮาร์ดแวร์ จะส่งสัญญาณให้บริการจัดการอินพุตทีวีแจ้งบริการอินพุตทีวีเมื่อบูตเพื่อเรียกบริการจัดการอินพุตทีวีและเพิ่มอินพุตทีวี สิทธิ์นี้ช่วยให้แอปอินพุตทีวีแบบฮาร์ดแวร์รองรับอินพุตทีวีหลายรายการต่อบริการอินพุตทีวี รวมถึงสามารถเพิ่มและนำอินพุตทีวีที่รองรับออกแบบไดนามิก</li> </ul> <h2 data-text="ผู้ให้บริการทีวี" id="tv_provider" tabindex="-1">ผู้ให้บริการทีวี</h2> <p>ฐานข้อมูลของผู้ให้บริการทีวีจะจัดเก็บช่องและรายการจากอินพุตทีวี นอกจากนี้ ผู้ให้บริการทีวียังเผยแพร่และจัดการสิทธิ์ที่เกี่ยวข้องเพื่อให้ TV Input เห็นเฉพาะระเบียนของตนเอง ตัวอย่างเช่น อินพุตทีวีหนึ่งๆ จะดูได้เฉพาะช่องและรายการที่อินพุตนั้นให้ไว้ และไม่ได้รับอนุญาตให้เข้าถึงช่องและรายการของอินพุตทีวีอื่นๆ</p> <p>ผู้ให้บริการทีวีจะแมป "ประเภทการออกอากาศ" กับ "ประเภทตามหลักเกณฑ์" ภายใน อินพุตของทีวีมีหน้าที่ป้อนข้อมูล "ประเภทการออกอากาศ" ด้วยค่าในมาตรฐานการออกอากาศที่เกี่ยวข้อง และช่อง "ประเภท Canonical" จะมีการเติมประเภทที่เกี่ยวข้องที่ถูกต้องจาก <code dir="ltr" translate="no">android.provider.TvContract.Genres</code> โดยอัตโนมัติ เช่น สำหรับการออกอากาศแบบมาตรฐาน ATSC A/65 และรายการที่เป็นประเภท 0x25 (หมายถึง "กีฬา") อินพุตทีวีจะป้อนข้อมูล "ประเภทการออกอากาศ" ด้วยสตริง "กีฬา" และผู้ให้บริการทีวีจะป้อนข้อมูลในช่อง "ประเภท Canonical" ด้วยค่า <code dir="ltr" translate="no">android.provider.TvContract.Genres.SPORTS</code> ที่แมปไว้</p> <p>ดูแผนภาพด้านล่างเพื่อดูมุมมองโดยละเอียดของผู้ให้บริการทีวี</p> <figure id="android-tv-provider"> <img alt="ผู้ให้บริการ Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/TIF_TV_Provider.png?hl=th" /> <figcaption><strong>รูปที่ 2</strong> ผู้ให้บริการ Android TV</figcaption> </figure> <p><em>มีเพียงแอปในพาร์ติชันระบบที่มีสิทธิ์เท่านั้นที่อ่านฐานข้อมูลผู้ให้บริการทีวีได้ทั้งหมด</em></p> <p>อินพุตทีวีแบบ Passthrough จะไม่จัดเก็บช่องและรายการ</p> <p>นอกจากช่องมาตรฐานและรายการแล้ว ฐานข้อมูลของผู้ให้บริการทีวียังมีฟิลด์ประเภท BLOB <code dir="ltr" translate="no">COLUMN_INTERNAL_PROVIDER_DATA</code> ในแต่ละตารางที่อินพุตทีวีอาจใช้เพื่อจัดเก็บข้อมูลตามต้องการ ข้อมูล BLOB ดังกล่าวอาจมีข้อมูลที่กําหนดเอง เช่น ความถี่ของจูนเนอร์ที่เชื่อมโยง และอาจระบุไว้ในบัฟเฟอร์โปรโตคอลหรือรูปแบบอื่น ช่องที่ค้นหาได้มีไว้เพื่อทำให้บางช่องไม่สามารถใช้งานในการค้นหาได้ (เช่น เพื่อให้เป็นไปตามข้อกำหนดเฉพาะของแต่ละประเทศสำหรับการปกป้องเนื้อหา)</p> <h3 data-text="ตัวอย่างช่องฐานข้อมูล" id="tv_provider_database_field_examples" tabindex="-1">ตัวอย่างช่องฐานข้อมูล</h3> <p>ผู้ให้บริการทีวีรองรับข้อมูลที่มีโครงสร้างในตารางช่อง (<code dir="ltr" translate="no">android.provider.TvContract.Channels</code>) และรายการ (<code dir="ltr" translate="no">android.provider.TvContract.Programs</code>) ตารางเหล่านี้ป้อนข้อมูลและเข้าถึงโดยอินพุตทีวีและแอประบบ เช่น แอป TV ตารางเหล่านี้มีช่อง 4 ประเภทดังนี้</p> <ul> <li><strong>การแสดงผล: </strong> ช่องแสดงผลมีข้อมูลที่แอป อาจต้องการให้ผู้ใช้เห็น เช่น ชื่อ (<code dir="ltr" translate="no">COLUMN_DISPLAY_NAME</code>) หรือหมายเลข (<code dir="ltr" translate="no">COLUMN_DISPLAY_NUMBER</code>) หรือชื่อรายการที่กำลังดูอยู่</li> <li><strong>ข้อมูลเมตา:</strong> มีช่อง 3 ช่องสำหรับระบุเนื้อหาตามมาตรฐานที่เกี่ยวข้อง เช่น รหัสสตรีมการขนส่งของช่อง (<code dir="ltr" translate="no">COLUMN_TRANSPORT_STREAM_ID</code>) รหัสเครือข่ายต้นทาง (<code dir="ltr" translate="no">COLUMN_ORIGINAL_NETWORK_ID</code>) และรหัสบริการ (<code dir="ltr" translate="no">COLUMN_SERVICE_ID</code>)</li> <li><strong>ข้อมูลภายใน</strong>: ฟิลด์สำหรับการใช้งานที่กำหนดเองของข้อมูลทีวี<br /> ช่องบางช่อง เช่น <code dir="ltr" translate="no">COLUMN_INTERNAL_PROVIDER_DATA</code> เป็นช่องที่ปรับแต่งได้ ซึ่งเป็นช่อง BLOB ที่อินพุตทีวีสามารถจัดเก็บข้อมูลเมตาที่กำหนดเองเกี่ยวกับช่องหรือรายการได้</li> <li><strong>แจ้งว่าไม่เหมาะสม: </strong>ช่องควรถูกจำกัดไม่ให้แสดงในการค้นหา เรียกดู หรือดูหรือไม่ การตั้งค่านี้ทำได้ที่ระดับช่องเท่านั้น โปรแกรมทั้งหมดจะเป็นไปตามการตั้งค่าในช่อง</li> <ul> <li><code dir="ltr" translate="no">COLUMN_SEARCHABLE</code>: การจำกัดการค้นหาจากบางช่องอาจเป็นสิ่งที่จําเป็นในบางภูมิภาค <code dir="ltr" translate="no">COLUMN_SEARCHABLE = 0</code> หมายความว่าช่องไม่ควรแสดงในผลการค้นหา</li> <li><code dir="ltr" translate="no">COLUMN_BROWSABLE</code>: มองเห็นได้เฉพาะแอปพลิเคชันของระบบเท่านั้น การจํากัดไม่ให้แอปพลิเคชันเรียกดูแชแนล <code dir="ltr" translate="no">COLUMN_BROWSABLE = 0</code> หมายความว่าไม่ควรรวมช่องนั้นไว้ในรายการช่อง</li> <li><code dir="ltr" translate="no">COLUMN_LOCKED</code>: มองเห็นได้เฉพาะแอปพลิเคชันของระบบเท่านั้น การจำกัดไม่ให้บัญชีที่ไม่ถูกต้องดูช่องได้โดยไม่ต้องป้อนรหัส PIN <code dir="ltr" translate="no">COLUMN_LOCKED = 1</code> หมายความว่าช่องควรได้รับการปกป้องโดยการควบคุมโดยผู้ปกครอง</li> </ul> </ul> <p>ดูรายการช่องแบบละเอียดได้ที่ <code dir="ltr" translate="no">android/frameworks/base/media/java/android/media/tv/TvContract.java</code></p> <h3 data-text="สิทธิ์และการควบคุมการเข้าถึง" id="permissions_and_access_control" tabindex="-1">สิทธิ์และการควบคุมการเข้าถึง</h3> <p>ทุกคนที่มีสิทธิ์เข้าถึงแถวที่เกี่ยวข้องจะเห็นช่องทั้งหมด ผู้ใช้จะเข้าถึงช่องใดๆ ไม่ได้โดยตรง โดยจะเห็นเฉพาะสิ่งที่แอปทีวี แอประบบ หรืออินพุตทีวีแสดง</p> <ul> <li>แต่ละแถวจะมี <code dir="ltr" translate="no">PACKAGE_NAME</code> ซึ่งก็คือแพ็กเกจ (แอป) ที่เป็นเจ้าของแถวนั้น ซึ่งตรวจสอบใน Query, Insert, Update ผ่าน TvProvider.java อินพุตทีวีอาจเข้าถึงเฉพาะข้อมูลที่เขียนไว้และปิดการเข้าถึงข้อมูลจากอินพุตอื่นๆ ของทีวี</li> <li>สิทธิ์การอ่านและเขียนผ่าน AndroidManifest.xml (ต้องได้รับความยินยอมจากผู้ใช้) เพื่อระบุแชแนลที่ใช้ได้</li> <li>เฉพาะแอป <code dir="ltr" translate="no">signatureOrSystem</code> เท่านั้นที่จะได้รับสิทธิ์ <code dir="ltr" translate="no">ACCESS_ALL_EPG_DATA</code> เพื่อเข้าถึงทั้งฐานข้อมูล</li> </ul> <h2 data-text="เครื่องมือจัดการอินพุตทีวี" id="tv_input_manager" tabindex="-1">เครื่องมือจัดการอินพุตทีวี</h2> <p>TV Input Manager มี API ระบบส่วนกลางสําหรับเฟรมเวิร์กอินพุตของ Android TV โดยรวม โดยทำหน้าที่เป็นสื่อกลางในการโต้ตอบระหว่างแอปกับอินพุตทีวี รวมถึงมีฟังก์ชันการควบคุมโดยผู้ปกครอง คุณต้องสร้างเซสชันตัวจัดการอินพุตทีวีแบบ 1:1 กับอินพุตทีวี เครื่องมือจัดการอินพุตทีวีจะอนุญาตให้เข้าถึงอินพุตทีวีที่ติดตั้งไว้เพื่อให้แอปดำเนินการต่อไปนี้ได้</p> <ul> <li>แสดงรายการอินพุตของทีวีและตรวจสอบสถานะ</li> <li>สร้างเซสชันและจัดการผู้ฟัง</li> </ul> <p>สำหรับเซสชัน แอปทีวีอาจปรับแต่งอินพุตทีวีเป็น URI ที่เพิ่มลงในฐานข้อมูลของผู้ให้บริการทีวีเท่านั้น ยกเว้นอินพุตทีวีที่ส่งผ่านซึ่งปรับแต่งได้โดยใช้ <code dir="ltr" translate="no">TvContract.buildChannelUriForPassthroughInput()</code> อินพุตของทีวีอาจตั้งค่าระดับเสียงเอาไว้ด้วย อินพุตทีวีที่ให้บริการและรับรองโดยผู้ผลิตอุปกรณ์ (แอปลายเซ็น) หรือแอปอื่นๆ ที่ติดตั้งในพาร์ติชันระบบจะมีสิทธิ์เข้าถึงฐานข้อมูลของผู้ให้บริการทีวีทั้งหมด สิทธิ์เข้าถึงนี้สามารถใช้ในการสร้างแอปเพื่อเรียกดูและค้นหาช่องและรายการทีวีทั้งหมดที่มีให้บริการ</p> <p>แอปอาจสร้างและลงทะเบียน <code dir="ltr" translate="no">TvInputCallback</code> กับ <code dir="ltr" translate="no">android.media.tv.TvInputManager</code> เพื่อให้ระบบเรียกกลับเมื่ออินพุตทีวีมีการเปลี่ยนแปลงสถานะ หรือเมื่อมีการเพิ่มหรือนำอินพุตทีวีออก ตัวอย่างเช่น แอปทีวีสามารถตอบสนองได้เมื่ออินพุตทีวีถูกตัดการเชื่อมต่อ โดยแสดงสถานะว่ายกเลิกการเชื่อมต่อและป้องกันไม่ให้เลือก</p> <p>เครื่องมือจัดการอินพุตทีวีจะจัดการการสื่อสารระหว่างแอปทีวีกับอินพุตทีวี อินเทอร์เฟซมาตรฐานของเครื่องมือจัดการอินพุตทีวีและอินพุตทีวีช่วยให้ผู้ผลิตอุปกรณ์หลายรายสร้างแอปทีวีของตนเองได้ ทั้งยังช่วยให้อินพุตทีวีของบุคคลที่สามทั้งหมดทำงานในแอปทีวีทั้งหมดได้</p> <h2 data-text="อินพุตทีวี" id="tv_inputs" tabindex="-1">อินพุตทีวี</h2> <p>อินพุตทีวีเป็นแอป Android ในแง่ที่มีไฟล์ AndroidManifest.xml และติดตั้งแล้ว (ผ่าน Play, ติดตั้งไว้ล่วงหน้า หรือโหลดจากแหล่งที่ไม่รู้จัก) Android TV รองรับแอประบบที่ติดตั้งไว้ล่วงหน้า แอปที่รับรองโดยผู้ผลิตอุปกรณ์ และอินพุตทีวีของบุคคลที่สาม</p> <p>อินพุตบางรายการ เช่น อินพุต HDMI หรืออินพุตของจูนเนอร์ในตัว จะต้องมาจากผู้ผลิตเท่านั้น เนื่องจากอินพุตเหล่านี้จะสื่อสารกับฮาร์ดแวร์ที่เกี่ยวข้องโดยตรง ส่วนแอปอื่นๆ เช่น IPTV, การจำลองสถานที่ และ STB ภายนอก บุคคลที่สามสามารถจัดหาแอปเหล่านี้เป็น APK ใน Google Play Store ได้ เมื่อดาวน์โหลดและติดตั้งแล้ว คุณสามารถเลือกอินพุตใหม่ภายในแอป TV ได้</p> <h3 data-text="ตัวอย่างอินพุตการส่งผ่าน" id="passthrough_input_example" tabindex="-1">ตัวอย่างอินพุตการส่งผ่าน</h3> <figure id="tv-system-input"> <img alt="อินพุตระบบ Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/TIF_HDMI_TV_Input.png?hl=th" /> <figcaption><strong>รูปที่ 3</strong> อินพุตระบบ Android TV</figcaption> </figure> <p>ในตัวอย่างนี้ อินพุตทีวีที่ผู้ผลิตอุปกรณ์ให้ไว้เชื่อถือได้และเข้าถึงผู้ให้บริการทีวีได้อย่างเต็มที่ ในฐานะอินพุตทีวีแบบส่งผ่าน อุปกรณ์นี้จะไม่ลงทะเบียนช่องหรือรายการใดๆ กับผู้ให้บริการทีวี หากต้องการรับ URI ที่ใช้อ้างอิงอินพุต Passthrough ให้ใช้<code dir="ltr" translate="no">android.media.tv.TvContract</code>วิธียูทิลิตี<code dir="ltr" translate="no">buildChannelUriForPassthroughInput(String inputId)</code> แอปทีวีจะสื่อสารกับตัวจัดการอินพุตทีวีเพื่อเข้าถึงอินพุต HDMI ของทีวี</p> <h3 data-text="ตัวอย่างเครื่องรับสัญญาณในตัว" id="built-in_tuner_example" tabindex="-1">ตัวอย่างเครื่องรับสัญญาณในตัว</h3> <figure id="tuner-input"> <img alt="อินพุตตัวรับสัญญาณในตัวของ Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/Built-in_Tuner_TV_Input.png?hl=th" width="70%" /> <figcaption><strong>รูปที่ 4</strong> อินพุตของจูนเนอร์ในตัวของ Android TV</figcaption> </figure> <p>ในตัวอย่างนี้ อินพุตทีวีจากจูนเนอร์ในตัวที่ผู้ผลิตอุปกรณ์ให้ไว้เชื่อถือได้และมีสิทธิ์เข้าถึงผู้ให้บริการทีวีอย่างเต็มรูปแบบ</p> <h3 data-text="ตัวอย่างอินพุตของบุคคลที่สาม" id="third-party_input_example" tabindex="-1">ตัวอย่างอินพุตของบุคคลที่สาม</h3> <figure id="tv-third-party-input"> <img alt="อินพุตของบุคคลที่สามใน Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/Third-party_Input_HDMI.png?hl=th" /> <figcaption><strong>รูปที่ 5</strong> อินพุตของบุคคลที่สามสำหรับ Android TV</figcaption> </figure> <p>ในตัวอย่างนี้ อินพุตทีวี STB ภายนอกมาจากบุคคลที่สาม เนื่องจากอินพุตทีวีดังกล่าวเข้าถึงฟีดวิดีโอ HDMI ที่เข้ามาโดยตรงไม่ได้ จึงต้องผ่านตัวจัดการอินพุตทีวีและใช้อินพุต HDMI ของทีวีที่ผู้ผลิตอุปกรณ์ให้มา</p> <p>อินพุตทีวี STB ภายนอกสามารถสื่อสารกับอินพุต HDMI ของทีวีผ่านตัวจัดการอินพุตทีวีและขอให้แสดงวิดีโอบน HDMI1 ดังนั้นอินพุตทีวี STB จึงควบคุมทีวีได้ ในขณะที่อินพุตทีวี HDMI ที่ผู้ผลิตกำหนดให้แสดงผลวิดีโอ</p> <h3 data-text="ตัวอย่างการแสดงภาพซ้อนภาพ (PIP) " id="picture_in_picture_pip_example" tabindex="-1">ตัวอย่างการแสดงภาพซ้อนภาพ (PIP) </h3> <figure id="tv-keyevents"> <img alt="เหตุการณ์สำคัญของ Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/TIF_PIP-PAP.png?hl=th" /> <figcaption><strong>รูปที่ 6</strong> เหตุการณ์สำคัญของ Android TV</figcaption> </figure> <p>แผนภาพด้านบนแสดงวิธีที่ระบบส่งปุ่มบนรีโมตคอนโทรลไปยังอินพุตทีวีที่เจาะจงสำหรับการแสดงภาพซ้อนภาพ (PIP) การกดปุ่มเหล่านั้นจะได้รับการตีความโดยไดรเวอร์ฮาร์ดแวร์ที่ผู้ผลิตอุปกรณ์ให้มา โดยแปลงสแกนครื่องฮาร์ดแวร์เป็นคีย์โค้ด Android และส่งไปยัง<a href="https://source.android.google.cn/docs/core/interaction/input?hl=th">ไปป์ไลน์อินพุต</a>มาตรฐานของ Android ฟังก์ชัน <code dir="ltr" translate="no">InputReader</code> และ <code dir="ltr" translate="no">InputDispatcher</code> จะทำงานเป็น <a href="http://developer.android.google.cn/reference/android/view/KeyEvent.html?hl=th">KeyEvents</a> ซึ่งจะทริกเกอร์เหตุการณ์ในแอปทีวีหากอยู่ในโฟกัส</p> <p>เฉพาะอินพุตทีวีของระบบเท่านั้นที่มีสิทธิ์ได้รับ <code dir="ltr" translate="no">InputEvents</code> และก็ต่อเมื่อมีสิทธิ์ของระบบ <code dir="ltr" translate="no">RECEIVE_INPUT_EVENT</code> อินพุตทีวีมีหน้าที่รับผิดชอบในการพิจารณาว่าจะใช้ InputEvents ใด และควรอนุญาตให้แอปทีวีจัดการคีย์ที่ไม่จำเป็นต้องใช้</p> <p>แอปทีวีมีหน้าที่รับผิดชอบในการทราบว่าอินพุตทีวีของระบบใดที่ใช้งานอยู่ ซึ่งหมายความว่าผู้ใช้เป็นผู้เลือก และเพื่อแยกแยะ <code dir="ltr" translate="no">KeyEvents</code> ที่เข้ามาและส่งไปยังเซสชันตัวจัดการอินพุตทีวีที่ถูกต้อง โดยเรียกใช้ <code dir="ltr" translate="no">dispatchInputEvent()</code> เพื่อส่งต่อเหตุการณ์ไปยังอินพุตทีวีที่เชื่อมโยง</p> <h3 data-text="ตัวอย่างอินพุต MHEG-5" id="mheg-5_input_example" tabindex="-1">ตัวอย่างอินพุต MHEG-5</h3> <p>แผนภาพต่อไปนี้แสดงมุมมองโดยละเอียดมากขึ้นเกี่ยวกับวิธีกำหนดเส้นทาง <code dir="ltr" translate="no">KeyEvents</code> ผ่าน TIF ของ Android</p> <figure id="tv-red-button"> <img alt="ตัวอย่างปุ่มสีแดงของ Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/TIF_MHEG5_app.png?hl=th" /> <figcaption><strong>รูปที่ 7</strong> ตัวอย่างปุ่มสีแดงของ Android TV</figcaption> </figure> <p>รูปภาพแสดงขั้นตอนของแอปปุ่มสีแดง ซึ่งเป็นแอปที่พบได้ทั่วไปในยุโรปสำหรับให้ผู้ใช้เข้าถึงแอปแบบอินเทอร์แอกทีฟบนทีวี ระบบสามารถส่งแอปผ่านสตรีมการนำส่งนี้ได้ เมื่อคลิกปุ่ม ก็จะสามารถโต้ตอบกับแอป ประกาศเหล่านี้ ตัวอย่างเช่น คุณอาจใช้แอปออกอากาศเหล่านี้เพื่อเข้าถึงหน้าเว็บหรือคะแนนการแข่งขันที่เกี่ยวข้อง</p> <p>ดูส่วน<em>แอปออกอากาศ</em>เพื่อดูวิธีที่แอปออกอากาศโต้ตอบกับแอปทีวี</p> <p>ในตัวอย่างนี้</p> <ol> <li>แอปทีวีอยู่ในโฟกัสและได้รับคีย์ทั้งหมด</li> <li><code dir="ltr" translate="no">KeyEvents</code> (เช่น ปุ่มสีแดง) ส่งไปยังทีวีที่ใช้งานอยู่ ป้อนเป็น <code dir="ltr" translate="no">InputEvents.</code></li> <li>อินพุตทีวีของระบบผสานรวมกับสแต็ก MHEG-5 และมีสิทธิ์ ของระบบ <code dir="ltr" translate="no">RECEIVE_INPUT_EVENT</code></li> <li>เมื่อได้รับรหัสคีย์เปิดใช้งาน (เช่น ปุ่มสีแดง) อินพุตทีวีจะเปิดใช้งานแอปออกอากาศ</li> <li>อินพุตทีวีใช้ <code dir="ltr" translate="no">KeyEvents</code> เป็น <code dir="ltr" translate="no">InputEvents</code> และแอปออกอากาศเป็นโฟกัสและจัดการ <code dir="ltr" translate="no">InputEvents</code> จนกว่าจะปิด</li> </ol> <p class="note"><strong>หมายเหตุ</strong>: อินพุตทีวีของบุคคลที่สามจะไม่ได้รับคีย์</p> <h2 data-text="HAL อินพุตทีวี" id="tv_input_hal" tabindex="-1">HAL อินพุตทีวี</h2> <p>HAL อินพุตทีวีจะช่วยพัฒนาอินพุตทีวีเพื่อเข้าถึงฮาร์ดแวร์เฉพาะสำหรับทีวี เช่นเดียวกับ HAL อื่นๆ ของ Android TV Input HAL (<code dir="ltr" translate="no">tv_input</code>) จะอยู่ในซอร์สทรีของ AOSP และผู้ให้บริการจะเป็นผู้พัฒนาการใช้งาน</p> <p class="note"><strong>หมายเหตุ</strong>: ตั้งแต่ Android 14 เป็นต้นไป ระบบจะกำหนดอินเทอร์เฟซ HAL ของอินพุตทีวีโดยใช้ <a href="https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/main/tv/input/aidl/android/hardware/tv/input">AIDL</a></p> <h2 data-text="แอปทีวี" id="tv_app" tabindex="-1">แอปทีวี</h2> <p>แอป System TV นำเสนอเนื้อหารายการทีวีสดแก่ผู้ใช้ แอปทีวีอ้างอิง (Live TV) มีให้ใช้งานพร้อมกับแพลตฟอร์ม Android ซึ่งผู้ผลิตอุปกรณ์สามารถใช้แอปนี้ตามที่เป็นอยู่ ปรับแต่ง ขยาย หรือแทนที่ <a href="https://android.googlesource.com/platform/packages/apps/TV/">ซอร์สโค้ด</a>มีอยู่ในโครงการโอเพนซอร์ส Android และคุณเริ่มต้นใช้งานได้ในบทความ<a href="https://source.android.google.cn/docs/devices/tv/reference-tv-app?hl=th">แอป Reference TV</a></p> <p>ผู้ผลิตอุปกรณ์อาจขยายการให้บริการแอปทีวีของตนเพื่อใช้ฟีเจอร์สำหรับผู้ผลิตอุปกรณ์หรือฟีเจอร์เฉพาะประเทศ แต่ก็ไม่ได้อยู่ในขอบเขตของ TIF หรือแอปทีวีอ้างอิง</p> <p>แอปทีวีของระบบต้องจัดการงานต่อไปนี้เป็นอย่างน้อย</p> <h3 data-text="การตั้งค่าและการกำหนดค่า" id="setup_and_configuration" tabindex="-1">การตั้งค่าและการกำหนดค่า</h3> <ul> <li>ตรวจหาอินพุตทีวีโดยอัตโนมัติ</li> <li>ให้อินพุตทีวีเริ่มการตั้งค่าช่อง</li> <li>ควบคุมการตั้งค่าโดยผู้ปกครอง</li> <li>แก้ไขช่อง</li> </ul> <h3 data-text="การดู" id="viewing" tabindex="-1">การดู</h3> <ul> <li>เข้าถึงและไปยังส่วนต่างๆ ของช่องทีวีทั้งหมด</li> <li>เข้าถึงแถบข้อมูลรายการทีวี</li> <li>แสดงข้อมูลคู่มือโปรแกรมอิเล็กทรอนิกส์ (EPG)</li> <li>รองรับแทร็กเสียงและคำบรรยายหลายแทร็ก</li> <li>มอบการทดสอบ PIN สำหรับการควบคุมโดยผู้ปกครอง</li> <li>อนุญาตให้วางซ้อน UI อินพุตทีวีสำหรับมาตรฐานทีวี (HbbTV ฯลฯ)</li> <li>แสดงข้อมูลในผลการค้นหาสำหรับช่องและรายการทีวี</li> <li>แสดงการ์ดการลิงก์แอป</li> <li>รองรับ API การเปลี่ยนเวลา</li> <li>จัดการฟังก์ชัน DVR และรองรับ API การบันทึกทีวี</li> </ul> <p>ชุดฟีเจอร์นี้จะเพิ่มขึ้นตามเวอร์ชัน Android ใหม่ที่มีการขยาย TIF API ของแพลตฟอร์ม CTS Verifier มอบการครอบคลุมการทดสอบความเข้ากันได้</p> <h3 data-text="การรองรับอินพุตทีวีของบุคคลที่สาม" id="support_for_third-party_tv_inputs" tabindex="-1">การรองรับอินพุตทีวีของบุคคลที่สาม</h3> <p>Android TV มี API สําหรับนักพัฒนาแอปสําหรับอินพุตทีวีของบุคคลที่สาม ซึ่งช่วยให้แอปที่ติดตั้งไว้สามารถส่งช่องซอฟต์แวร์ไปยังประสบการณ์การรับชมรายการทีวีสดได้ แอป System TV มีหน้าที่รับผิดชอบบางอย่างเกี่ยวกับการแสดงอินพุตและช่องทีวีของบุคคลที่สามให้ผู้ใช้เห็นเพื่อให้สามารถใช้งานอุปกรณ์ Android ที่เข้ากันได้ แอปทีวีสดอ้างอิงมีการใช้งานที่เข้ากันได้ หากต้องการแทนที่แอปทีวีของระบบ ผู้ผลิตอุปกรณ์ต้องตรวจสอบว่าแอปของตัวเองมีความเข้ากันได้ในลักษณะเดียวกัน เพื่อให้เป็นไปตามความคาดหวังของนักพัฒนาแอปในอุปกรณ์ Android TV ทั้งหมด</p> <p>แอปทีวีของระบบต้องแสดงอินพุตของบุคคลที่สามควบคู่ไปกับบริการทีวีสดเริ่มต้นของอุปกรณ์ ประโยชน์ของ API สําหรับนักพัฒนาแอปคือผู้ใช้จะค้นหาช่องได้ (เมื่อติดตั้งแล้ว) ผ่านประสบการณ์การใช้งานทีวีแบบมาตรฐาน</p> <p>อนุญาตให้แยกความแตกต่างของรูปลักษณ์ระหว่างช่องในตัวกับช่องของบุคคลที่สาม ตามที่ระบุไว้ในส่วนแอปทีวีของ CDD ของ Android</p> <p>ส่วนต่อไปนี้จะแสดงวิธีที่แอปพลิเคชัน Live TV ปฏิบัติตามข้อกำหนดของ CDD</p> <h4 data-text="การตั้งค่าช่องใหม่" id="new_channel_setup" tabindex="-1">การตั้งค่าช่องใหม่</h4> <p>การเพิ่มอินพุต/ช่องของบุคคลที่สามใหม่เริ่มต้นด้วยผู้ใช้ค้นหาและติดตั้งอินพุตทีวีจาก App Store เช่น Google Play</p> <p>อินพุตทีวีของบุคคลที่สามบางรายการจะเพิ่มช่องลงในฐานข้อมูล TvProvider โดยอัตโนมัติ แต่ส่วนใหญ่จะมีกิจกรรมการตั้งค่าเพื่อให้ผู้ใช้ตั้งค่าแชแนล ระบุรายละเอียดการเข้าสู่ระบบ และดำเนินการอื่นๆ ได้ แอป TV ของระบบต้องตรวจสอบว่าผู้ใช้เปิดใช้งานกิจกรรมการตั้งค่านี้ได้ ซึ่งเป็นเหตุผลที่ CDD กำหนดให้อินพุตของบุคคลที่สามทำให้การนำทางออกจากแอปทีวีหลักน้อยที่สุด</p> <p>แอปรายการทีวีสดอ้างอิงจะมีเมนูแหล่งที่มาของช่องสำหรับการเข้าถึงอินพุต</p> <figure id="go-to-settings"> <img alt="ไปที่การตั้งค่า" src="https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_settings.png?hl=th" /> <figcaption><strong>รูปที่ 8</strong> ไปที่<strong>การตั้งค่า</strong></figcaption> </figure> <br /> <figure id="go-to-channel-sources"> <img alt="ไปที่ &amp;quot;แหล่งที่มาของช่อง&amp;quot; ในการตั้งค่า" src="https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_channel_sources.png?hl=th" /> <figcaption><strong>รูปที่ 9</strong> ไปที่<strong>แหล่งที่มาของช่อง</strong>ในการตั้งค่า</figcaption> </figure> <br /> <figure id="select-source-from-list"> <img alt="เลือกแหล่งที่มาจากรายการ" src="https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_sources.png?hl=th" /> <figcaption><strong>รูปที่ 10</strong> เลือกแหล่งที่มาจากรายการ</figcaption> </figure> <br /> <figure id="add-channels-from-source"> <img alt="เพิ่มช่องจากแหล่งที่มาของคุณ" src="https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_Add_channel.png?hl=th" /> <figcaption><strong>รูปที่ 11</strong> เพิ่มช่องจากแหล่งที่มา</figcaption> </figure> <p>นอกจากนี้ จะมีการ์ดการแจ้งเตือนแสดงที่ด้านบนของเมนูแอป TV หลังจากติดตั้ง TvInput ใหม่แล้ว เพื่อนำผู้ใช้ไปยังการตั้งค่าโดยตรง โดยทำดังนี้</p> <figure id="new-channel-sources-available"> <img alt="การแจ้งเตือนที่แสดงแหล่งที่มาของช่องใหม่พร้อมใช้งานแล้ว" src="https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_set_up_sources.png?hl=th" /> <figcaption><strong>รูปที่ 12</strong> การแจ้งเตือนที่แสดงแหล่งที่มา ของช่องใหม่พร้อมใช้งานแล้ว</figcaption> </figure> <p>หากผู้ใช้ดำเนินการผ่านข้อความแจ้ง ผู้ใช้สามารถเลือกตั้งค่าแหล่งที่มาได้ดังที่แสดงในรูปที่ 10</p> <p>ดู<a href="http://developer.android.google.cn/training/tv/tif/tvinput.html?hl=th#setup">กำหนดบริการอินพุตทีวี</a>เพื่อดูสิ่งที่นักพัฒนาแอปคาดหวังในส่วนนี้</p> <h4 data-text="ปรับแต่งรายการช่อง" id="customize_the_channel_list" tabindex="-1">ปรับแต่งรายการช่อง</h4> <p>ผู้ผลิตอุปกรณ์อาจให้บริการ UI เพื่อซ่อนบางช่องและอนุญาตให้ผู้ใช้จัดการ EPG ของตนเอง รายการทีวีสดมีบริการดังกล่าวด้วย</p> <figure id="open-channel-list"> <img alt="เปิดรายการช่องในการตั้งค่า" src="https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_channel_list.png?hl=th" /> <figcaption><strong>รูปที่ 13</strong> เปิดรายการช่องใน<strong>การตั้งค่า</strong></figcaption> </figure> <br /> <figure id="customize-channel-list"> <img alt="ปรับแต่งรายการช่อง" src="https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_customize_channel-list.png?hl=th" /> <figcaption><strong>รูปที่ 14</strong> ปรับแต่งรายการช่อง</figcaption> </figure> <h4 data-text="EPG" id="epg" tabindex="-1">EPG</h4> <p>นักพัฒนาอินพุตบุคคลที่สามต้องมั่นใจว่าผู้ใช้สามารถไปยังช่องของตนได้อย่างง่ายดายในระหว่างการใช้งานทั่วไปในอุปกรณ์ Android TV ที่เข้ากันได้ทั้งหมด</p> <p>ช่องจากอินพุตของบุคคลที่สามต้องแสดงเป็นส่วนหนึ่งของ EPG ประสบการณ์การรับชมรายการสดแบบมาตรฐานของอุปกรณ์ คุณใช้การแยกภาพหรือแยกหมวดหมู่สำหรับช่องของบุคคลที่สามได้ (ดูส่วนแอปทีวีของ CDD ของ Android) โดยสิ่งสำคัญคือผู้ใช้ต้องค้นหาช่องที่ติดตั้งไว้ได้</p> <h4 data-text="ค้นหา" id="search" tabindex="-1">ค้นหา</h4> <p>ผู้ผลิตต้องใช้แอป TV เพื่อรวมผลการค้นหาสำหรับคำขอการค้นหาทั่วโลกเพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด รายการทีวีสดมีการใช้งาน (ดู<a href="https://android.googlesource.com/platform/packages/apps/TV/+/main/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java"> ซึ่งให้ผลลัพธ์จากอินพุตของบุคคลที่สาม (จําเป็นสําหรับความเข้ากันได้ของแพลตฟอร์ม) รวมถึงอินพุตในตัว</a></p><a href="https://android.googlesource.com/platform/packages/apps/TV/+/main/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java"> <h4 data-text="การเลื่อนเวลา" id="time-shifting" tabindex="-1">การเลื่อนเวลา</h4> </a><p><a href="https://android.googlesource.com/platform/packages/apps/TV/+/main/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java"> สำหรับอุปกรณ์ที่ใช้ Android 6.0 ขึ้นไป แอปทีวีต้องรองรับ </a><a href="https://developer.android.google.cn/reference/android/media/tv/TvView.html?hl=th">API การเปลี่ยนเวลา</a>ของเฟรมเวิร์ก Android นอกจากนี้ ผู้ผลิตยังต้องใช้การควบคุมการเล่นในแอปทีวี ซึ่งช่วยให้ผู้ใช้หยุดชั่วคราว เล่นต่อ กรอกลับ และกรอไปข้างหน้าได้ </p> <p> สำหรับอินพุตทีวีที่รองรับการเปลี่ยนเวลา แอปทีวีจะต้องแสดงตัวควบคุมการเล่น </p> <figure id="playback-controls"> <img alt="ตัวควบคุมการเล่น" src="https://source.android.google.cn/static/docs/devices/tv/images/TIF_timeshift.png?hl=th" /> <figcaption><strong>รูปที่ 15</strong> ตัวควบคุมการเล่น</figcaption> </figure> <h4 data-text="DVR" id="dvr" tabindex="-1">DVR</h4> <p> สำหรับอุปกรณ์ที่ใช้ Android 7.0 ขึ้นไป แอปทีวีต้องรองรับ <a href="https://developer.android.google.cn/reference/android/media/tv/TvRecordingClient.html?hl=th">TV recording API</a> ของเฟรมเวิร์ก Android เพื่อรองรับ แสดงรายการ และเล่นรายการที่บันทึกไว้ </p> <p> ซึ่งช่วยให้ผู้ผลิตอุปกรณ์สามารถเสียบระบบย่อย DVR เข้ากับ TIF และลดความพยายามในการผสานรวมที่จำเป็นในการเปิดใช้หรือผสานรวมฟังก์ชันการทำงานของ DVR ในอุปกรณ์ทีวีได้อย่างมาก นอกจากนี้ ยังช่วยให้บุคคลที่สามสามารถจัดหาระบบ DVR หลังการขายที่เสียบเข้ากับอุปกรณ์ Android TV ได้ </p> <p> นอกจากการบันทึกเนื้อหาสดแล้ว แอปทีวียังจัดการทรัพยากรที่ทับซ้อนกันด้วย เช่น หากอุปกรณ์มีตัวรับสัญญาณ 2 ตัว ก็จะบันทึกรายการทีวีได้ 2 รายการพร้อมกัน หากผู้ใช้ขอให้บันทึก 3 รายการ แอปทีวีต้องจัดการกับความขัดแย้งและควรแสดงการแจ้งเตือนหรือขอให้ผู้ใช้กำหนดลำดับความสำคัญของคำขอเหล่านี้ </p> <p> แอปทีวียังใช้ตรรกะที่ซับซ้อนมากขึ้นได้ด้วย เช่น เมื่อผู้ใช้ขอบันทึกตอนหนึ่ง แอปจะถามว่าผู้ใช้ต้องการบันทึกตอนที่เหลือทั้งหมดของซีรีส์ไหม </p> <p> ดูภาพรวมการใช้งาน DVR ที่เป็นไปได้ใน Android TV ได้จากแผนภาพต่อไปนี้ </p> <figure id="dvr-in-android-tv"> <img alt="การบันทึกวิดีโอดิจิทัลใน Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/TV_Input_DVR.png?hl=th" /> <figcaption><strong>รูปที่ 16</strong> การบันทึกวิดีโอดิจิทัลใน Android TV</figcaption> </figure> <br /> <ol> <li>บริการอินพุตทีวีจะบอกแอปทีวีว่ามีตัวรับสัญญาณกี่ตัวเพื่อให้แอปทีวีจัดการกับทรัพยากรที่อาจเกิดข้อขัดแย้งได้</li> <li>แอปทีวีได้รับคําขอที่ผู้ใช้เริ่มบันทึกรายการทีวี</li> <li>แอป TV จะจัดเก็บกำหนดการบันทึกไว้ในฐานข้อมูลภายใน</li> <li>เมื่อถึงเวลาบันทึก แอป TV จะส่งคำขอให้ปรับจูนไปยังช่องที่เชื่อมโยงกับการบันทึก</li> <li>บริการอินพุตทีวีจะรับคําขอนี้ ตอบกลับว่ามีทรัพยากรที่เหมาะสมหรือไม่ และปรับช่อง</li> <li>จากนั้นแอปทีวีจะส่งคําขอเริ่มบันทึกไปยังตัวจัดการอินพุตทีวี</li> <li>บริการอินพุตทีวีจะรับคําขอนี้และเริ่มบันทึก</li> <li>บริการอินพุตทีวีจะจัดเก็บข้อมูลวิดีโอจริงไว้ในพื้นที่เก็บข้อมูล ซึ่งอาจเป็นพื้นที่เก็บข้อมูลภายนอกหรือพื้นที่เก็บข้อมูลระบบคลาวด์</li> <li>เมื่อถึงเวลาสิ้นสุดการบันทึก แอปทีวีจะส่งคําขอหยุดบันทึกไปยังตัวจัดการอินพุตทีวี</li> <li>เมื่อบริการอินพุตทีวีได้รับคำขอ บริการจะหยุดการบันทึกและเพิ่มข้อมูลเมตาที่เกี่ยวข้องไปยังผู้ให้บริการทีวีเพื่อให้แอปทีวีแสดงการบันทึกแก่ผู้ใช้เมื่อได้รับคำขอ</li> </ol> <p> ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์การบันทึกในบริการอินพุตทีวีได้ที่บทความ<a href="https://developer.android.google.cn/training/tv/tif/content-recording?hl=th">การบันทึกทีวี</a>นี้ </p> <h3 data-text="แหล่งข้อมูลที่มีประโยชน์" id="useful_resources" tabindex="-1">แหล่งข้อมูลที่มีประโยชน์</h3> <ul> <li><a href="https://source.android.google.cn/static/docs/compatibility/android-cdd.pdf?hl=th">Android CDD</a> และ API สำหรับนักพัฒนาซอฟต์แวร์ที่บันทึกไว้ในเอกสารประกอบเป็นข้อมูลอ้างอิงที่สมบูรณ์</li> <li>CTS Verifier จะทดสอบ API เป็นส่วนหนึ่งของโปรแกรมการทดสอบความเข้ากันได้ การใช้ฟีเจอร์นี้กับรายการทีวีสดอาจเป็นวิธีที่มีประโยชน์ในการดู EPG, การค้นหา, การควบคุมโดยผู้ปกครอง และข้อกำหนดอื่นๆ ในบริบทของอินพุตของบุคคลที่สาม</li> <li>ดู<a href="http://developer.android.google.cn/training/tv/tif/tvinput.html?hl=th#setup">กำหนดบริการอินพุตทีวี</a>เพื่อดูสิ่งที่นักพัฒนาแอปคาดหวังในส่วนนี้</li> </ul> <h2 data-text="การควบคุมโดยผู้ปกครอง" id="parental_control" tabindex="-1">การควบคุมโดยผู้ปกครอง</h2> <p>การควบคุมโดยผู้ปกครองให้ผู้ใช้บล็อกช่องและโปรแกรมที่ไม่พึงประสงค์ได้ แต่จะข้ามการบล็อกได้ด้วยการป้อนรหัส PIN</p> <p>ความรับผิดชอบต่อฟังก์ชันการควบคุมโดยผู้ปกครองแชร์กันระหว่างแอปทีวี บริการเครื่องมือจัดการอินพุตทีวี ผู้ให้บริการทีวี และอินพุตทีวี</p> <p>การควบคุมโดยผู้ปกครองเป็นสิ่งจำเป็นและอยู่ภายใต้ CTS Verifier</p> <p>หลายประเทศได้กำหนดระบบการจัดประเภทที่อินพุตทีวีสามารถใช้ผ่าน <a href="https://developer.android.google.cn/reference/android/media/tv/TvContentRating.html?hl=th"> TVContentRating API</a> นอกจากนี้ อินพุตทีวียังลงทะเบียนระบบการจัดประเภทที่กำหนดเองได้ ซึ่งเห็นได้จากการทดสอบของ CTS Verifier ซึ่งช่วยแนะนำการจัดประเภท "ปลอม" สำหรับประเทศที่มีระบบการจัดประเภทมาตรฐาน เราขอแนะนำให้ผู้ผลิตอุปกรณ์รวมการควบคุมโดยผู้ปกครองของเฟรมเวิร์กอินพุตทีวีเข้ากับกลไกอื่นๆ ที่อาจรวมไว้ด้วย</p> <h3 data-text="ผู้ให้บริการโทรทัศน์" id="tv_provider" tabindex="-1">ผู้ให้บริการโทรทัศน์</h3> <p>แถวช่องแต่ละแถวจะมีช่อง <code dir="ltr" translate="no">COLUMN_LOCKED</code> ที่ใช้ล็อกช่องใดช่องหนึ่งไม่ให้ดูได้โดยไม่ต้องป้อนรหัส PIN ช่องโปรแกรม <code dir="ltr" translate="no">COLUMN_CONTENT_RATING</code> มีไว้สำหรับแสดงผลและไม่ได้ใช้ในการบังคับใช้การควบคุมโดยผู้ปกครอง</p> <h3 data-text="เครื่องมือจัดการอินพุตทีวี" id="tv_input_manager" tabindex="-1">เครื่องมือจัดการอินพุตทีวี</h3> <p>TV Input Manager จะจัดเก็บ <code dir="ltr" translate="no">TvContentRating</code> ที่ถูกบล็อกทุกรายการและตอบสนองต่อ <code dir="ltr" translate="no">isRatingBlocked()</code> เพื่อแนะนำว่าควรบล็อกเนื้อหาที่มีการจัดประเภทที่ระบุหรือไม่</p> <h3 data-text="อินพุตทีวี" id="tv_input" tabindex="-1">อินพุตทีวี</h3> <p>อินพุตทีวีจะตรวจสอบว่าควรบล็อกเนื้อหาปัจจุบันหรือไม่โดยเรียกใช้ <code dir="ltr" translate="no">isRatingBlocked()</code> ในเครื่องมือจัดการอินพุตทีวีเมื่อการจัดประเภทของเนื้อหาที่แสดงมีการเปลี่ยนแปลง (เมื่อเปลี่ยนรายการหรือช่อง) หรือการตั้งค่าการควบคุมโดยผู้ปกครองมีการเปลี่ยนแปลง (ใน <code dir="ltr" translate="no">ACTION_BLOCKED_RATINGS_CHANGED</code> และ <code dir="ltr" translate="no">ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED</code>) หากควรบล็อกเนื้อหา อินพุตทีวีจะปิดใช้เสียงและวิดีโอ และแจ้งให้แอปทีวีทราบว่าเนื้อหาปัจจุบันถูกบล็อกโดยเรียกใช้ <code dir="ltr" translate="no">notifyContentBlocked(TvContentRating)</code> หากเนื้อหาไม่ควรถูกบล็อก อินพุตทีวีจะเปิดใช้เสียงและวิดีโอ และแจ้งให้แอปทีวีทราบว่าเนื้อหาปัจจุบันได้รับอนุญาตโดยเรียกใช้ <code dir="ltr" translate="no">notifyContentAllowed()</code></p> <h3 data-text="แอปทีวี" id="tv_app" tabindex="-1">แอปทีวี</h3> <p>แอป TV ของระบบต้องมีวิธีให้ผู้ใช้จัดการการควบคุมโดยผู้ปกครองได้ ซึ่งรวมถึงการจัดประเภทแบบกำหนดเองที่ลงทะเบียนโดยแอปใดแอปหนึ่ง เพื่อให้เป็นไปตามข้อกำหนด API การควบคุมโดยผู้ปกครอง และสร้างแพลตฟอร์มที่เข้ากันได้</p> <p>แอปทีวีจะแสดง UI รหัส PIN เมื่ออินพุตทีวีแจ้งว่าเนื้อหาปัจจุบันถูกบล็อก หรือเมื่อผู้ใช้พยายามดูช่องที่บล็อก</p> <p>แอปทีวีไม่ได้จัดเก็บการตั้งค่าการควบคุมโดยผู้ปกครองโดยตรง เมื่อผู้ใช้เปลี่ยนการตั้งค่าการควบคุมโดยผู้ปกครอง <code dir="ltr" translate="no">TvContentRating</code> ที่ถูกบล็อกทั้งหมดจะจัดเก็บโดยเครื่องมือจัดการอินพุตทีวี และช่องที่ถูกบล็อกจะจัดเก็บโดยผู้ให้บริการทีวี</p> <p>แอปทีวีต้องประกาศสิทธิ์ <code dir="ltr" translate="no">android.permission.MODIFY_PARENTAL_CONTROLS</code> เพื่อเปลี่ยนการตั้งค่าการควบคุมโดยผู้ปกครอง</p> <p>เราขอแนะนำให้ผู้ผลิตอุปกรณ์ดำเนินการต่อไปนี้</p> <ul> <li>ทดสอบการควบคุมโดยผู้ปกครองของ CTS Verifier กับแอปพลิเคชันรายการทีวีสดอ้างอิงเพื่อสาธิตข้อกำหนดด้านความเข้ากันได้</li> <li>ใช้แอปทีวีสดเป็นข้อมูลอ้างอิงสำหรับแอปทีวีของตนเอง โดยเฉพาะอย่างยิ่งดูแหล่งที่มาของ <a href="https://android.googlesource.com/platform/packages/apps/TV/+/main/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java"> ContentRatingsManager</a> และ <a href="https://android.googlesource.com/platform/packages/apps/TV/+/main/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java"> RatingSystemsFragment</a> รวมถึงวิธีที่แอปจัดการการจัดประเภทที่กำหนดเอง</li> </ul> <h2 data-text="HDMI-CEC" id="hdmi-cec" tabindex="-1">HDMI-CEC</h2> <p>HDMI-CEC ช่วยให้อุปกรณ์หนึ่งควบคุมอุปกรณ์อีกเครื่องหนึ่งได้ จึงใช้รีโมตตัวเดียวควบคุมเครื่องใช้ไฟฟ้าหลายเครื่องในโฮมเธียเตอร์ได้ Android TV ใช้เพื่อเร่งการตั้งค่าและอนุญาตให้ควบคุมอินพุตทีวีต่างๆ จากระยะไกลผ่านแอปทีวีส่วนกลาง เช่น อาจสลับอินพุต เปิดหรือปิดอุปกรณ์ และอื่นๆ</p> <p>TIF ของ Android ใช้ HDMI-CEC เป็นบริการควบคุม HDMI เพื่อให้ผู้ผลิตอุปกรณ์ไม่ต้องพัฒนาไดรเวอร์ระดับต่ำที่โต้ตอบกับ HAL ของ Android TV น้ำหนักเบา โดยข้ามตรรกะทางธุรกิจที่ซับซ้อนกว่าไป Android พยายามลดปัญหาความเข้ากันได้โดยลดการใช้งานแบบแยกส่วนและการสนับสนุนฟีเจอร์เฉพาะด้าน เพื่อให้มีการติดตั้งใช้งานตามมาตรฐาน บริการควบคุม HDMI ใช้บริการที่มีอยู่ของ Android ซึ่งรวมถึงอินพุตและการเปิด/ปิด</p> <p>ซึ่งหมายความว่าการใช้งาน HDMI-CEC ที่มีอยู่จะต้องได้รับการออกแบบใหม่เพื่อให้ทำงานร่วมกับ TIF ของ Android ได้ เราขอแนะนำให้แพลตฟอร์มฮาร์ดแวร์มีไมโครโปรเซสเซอร์เพื่อรับคำสั่งเปิด CEC และคำสั่งอื่นๆ</p> <figure id="cec-integration"> <img alt="การผสานรวม CEC ใน Android TV" src="https://source.android.google.cn/static/docs/devices/tv/images/TV_App_CEC_integration.png?hl=th" /> <figcaption><strong>รูปที่ 17</strong> การผสานรวม CEC ใน Android TV</figcaption> </figure> <br /> <ol> <li>โดยบัส CEC จะได้รับคำสั่งจากแหล่งที่มาที่ใช้งานอยู่ในปัจจุบันให้เปลี่ยนไปใช้แหล่งที่มาอื่น</li> <li>โปรแกรมควบคุมจะส่งคำสั่งไปยัง HAL ของ HDMI-CEC</li> <li>HAL จะแจ้ง <code dir="ltr" translate="no">ActiveSourceChangeListeners</code> ทั้งหมด</li> <li>บริการควบคุม HDMI ได้รับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงแหล่งที่มาผ่าน <code dir="ltr" translate="no">ActiveSourceChangeListener</code></li> <li>บริการตัวจัดการอินพุตทีวีจะสร้าง Intent เพื่อให้แอปทีวีเปลี่ยนแหล่งที่มา</li> <li>จากนั้นแอปทีวีจะสร้างเซสชันตัวจัดการอินพุตทีวีสำหรับอินพุตทีวีที่กำลังเปลี่ยนไปใช้ และเรียกใช้ <code dir="ltr" translate="no">setMain</code> ในเซสชันนั้น</li> <li>เซสชันตัวจัดการอินพุตทีวีจะส่งต่อข้อมูลนี้ไปยังอินพุต HDMI ของทีวี</li> <li>อินพุต HDMI ของทีวีขอตั้งค่าพื้นผิวย่านความถี่ข้าง</li> <li>บริการโปรแกรมจัดการอินพุตทีวีจะสร้างคำสั่งควบคุมการกำหนดเส้นทางที่เกี่ยวข้องกลับไปยังบริการควบคุม HDMI เมื่อตั้งค่าพื้นผิวแล้ว</li> </ol> <h2 data-text="หลักเกณฑ์การผสานรวมทีวี" id="tv_integration_guidelines" tabindex="-1">หลักเกณฑ์การผสานรวมทีวี</h2> <h3 data-text="แอปออกอากาศ" id="broadcast_app" tabindex="-1">แอปออกอากาศ</h3> <p>เนื่องจากแต่ละประเทศมีข้อกำหนดเฉพาะสำหรับการออกอากาศ (MHEG, Teletext, HbbTV และอื่นๆ) ผู้ผลิตจึงควรจัดหาโซลูชันของตนเองสำหรับแอปการออกอากาศ เช่น</p> <ul> <li>MHEG: สแต็กแบบเนทีฟ</li> <li>เทเลเท็กซ์: สแต็กเนทีฟ</li> <li>HbbTV: โซลูชัน HbbTV จาก Vewd Software</li> </ul> <p>ในรุ่น Android L นั้น Android TV คาดหวังให้ผู้ผลิตอุปกรณ์ใช้ผู้ผสานรวมระบบหรือโซลูชัน Android สำหรับสแต็กทีวีระดับภูมิภาค ส่งผ่านแพลตฟอร์มไปยังสแต็กซอฟต์แวร์ทีวี หรือส่งรหัสคีย์ที่จำเป็นเพื่อโต้ตอบกับสแต็กเดิม</p> <p>ต่อไปนี้คือวิธีที่แอปออกอากาศและแอปทีวีทำงานร่วมกัน</p> <ol> <li>แอปทีวีอยู่ในโฟกัส โดยรับแป้นพิมพ์ทั้งหมด</li> <li>แอปทีวีจะส่งคีย์ (เช่น ปุ่มสีแดง) ไปยังอุปกรณ์อินพุตของทีวี</li> <li>อุปกรณ์อินพุตทีวีจะผสานรวมกับชุดทีวีเดิมเป็นการภายใน</li> <li>เมื่อได้รับรหัสคีย์การเปิดใช้งาน (เช่น ปุ่มสีแดง) อุปกรณ์อินพุตทีวีจะเปิดใช้งานแอปออกอากาศ</li> <li>แอปออกอากาศจะเป็นผู้รับโฟกัสในแอปทีวีและจัดการการดำเนินการของผู้ใช้</li> </ol> <p>สําหรับการค้นหา/คําแนะนําด้วยเสียง แอปการออกอากาศอาจรองรับการค้นหาในแอปสําหรับการค้นหาด้วยเสียง</p> <devsite-hats-survey class="nocontent" hats-id="p92MLLB8a0gakU8RTPD0UnfTgV99" listnr-id="715571"></devsite-hats-survey> </div> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ใน<a href="https://source.android.google.cn/license?hl=th">ใบอนุญาตการใช้เนื้อหา</a> Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ</p> <p>อัปเดตล่าสุด 2024-11-09 UTC</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [null,null,["อัปเดตล่าสุด 2024-11-09 UTC"],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="ลิงก์ส่วนท้าย"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">บิวด์</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//android.googlesource.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > ที่เก็บสำหรับ Android </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/source/requirements" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > ข้อกำหนด </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/source/downloading" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > ดาวน์โหลด </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//developers.google.com/android/blobs-preview/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > แสดงพรีวิวไบนารี </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//developers.google.com/android/images/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > อิมเมจเวอร์ชันโรงงาน </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//developers.google.com/android/drivers/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > ไบนารีไดรเวอร์ </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//android.github.io" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > GitHub </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">เชื่อมต่อ</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/Android/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > @Android บน Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/AndroidDev/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > @AndroidDev บน Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//blog.google/products/android/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > บล็อก Android </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//security.googleblog.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > บล็อกด้านความปลอดภัยของ Google </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//groups.google.com/forum/?fromgroups#!forum/android-platform/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > แพลตฟอร์มบน Google Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//groups.google.com/forum/?fromgroups#!forum/android-building/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > การพัฒนาบน Google Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//groups.google.com/forum/?fromgroups#!forum/android-porting/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > การพอร์ตบน Google Groups </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">รับความช่วยเหลือ</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//support.google.com/android/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > ศูนย์ช่วยเหลือของ Android </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//support.google.com/pixelphone/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > ศูนย์ช่วยเหลือของ Pixel </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//support.google.com/nexus/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > ศูนย์ช่วยเหลือของ Nexus </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > www.android.com </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com/gms/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Google Mobile Services </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//stackoverflow.com/questions/tagged/android-source/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Stack Overflow </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//issuetracker.google.com/issues?q=status:open%20componentid:190923" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > เครื่องมือติดตามปัญหา </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-utility-links" aria-label="ลิงก์ยูทิลิตี"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="https://source.android.google.cn/source/?hl=th" data-category="Site-Wide Custom Events" data-label="Footer About Android link" > เกี่ยวกับ Android </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="https://source.android.google.cn/source/community?hl=th" data-category="Site-Wide Custom Events" data-label="Footer Community link" > ชุมชน </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="https://source.android.google.cn/legal?hl=th" data-category="Site-Wide Custom Events" data-label="Footer Legal link" > กฎหมาย </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="https://source.android.google.cn/license?hl=th" data-category="Site-Wide Custom Events" data-label="Footer License link" > ใบอนุญาต </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.cn/privacy?hl=th" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > ความเป็นส่วนตัว </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//issuetracker.google.com/issues/new?component=191476&hl=th" data-category="Site-Wide Custom Events" data-label="Footer Site feedback link" > ความคิดเห็นเกี่ยวกับเว็บไซต์ </a> </li> <li class="devsite-footer-utility-item "> <span>ICP证合字B2-20070004号</span> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip blocked-link></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;False&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-K8DD4HTCSG&#34;, &#34;purpose&#34;: 0}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-K8DD4HTCSG&#34;, &#34;purpose&#34;: 0}], &#34;gtm&#34;: [], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;True&#34;, &#34;requested&#34;: &#34;th&#34;, &#34;served&#34;: &#34;th&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Android Open Source Project&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;androidsource_china&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <android-fully-clickable target=" .android-case-study .devsite-landing-row-item, .android-grouped-resources .devsite-landing-row-item, .android-grouped-resources-contained--primary .devsite-landing-row-item, .android-grouped-resources-contained--secondary .devsite-landing-row-item, .android-grouped-resources-contained--tertiary .devsite-landing-row-item, .android-grouped-resources-primary .devsite-landing-row-item, .android-grouped-resources-secondary .devsite-landing-row-item, .android-grouped-resources-uncontained--primary .devsite-landing-row-item, .android-grouped-resources-uncontained--secondary .devsite-landing-row-item, .android-grouped-resources-uncontained--tertiary .devsite-landing-row-item, .android-guide-cards .devsite-landing-row-item, .android-illustrated-resources-index .devsite-landing-row-item, .android-illustrated-resources-primary .devsite-landing-row-item, .android-illustrated-resources-secondary .devsite-landing-row-item, .android-illustrated-resources-secondary-small .devsite-landing-row-item, .android-illustrated-resources-tertiary .devsite-landing-row-item, .android-illustrated-resources-tertiary-small .devsite-landing-row-item, .android-promo .devsite-landing-row-item, .android-quick-link, .android-samples .devsite-card-wrapper, .fully-clickable" watch=".android-samples, devsite-content"></android-fully-clickable> <script nonce="KYDLz6FvGMtC+wNrIubAbR15dA5Z1O"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/js/app_loader.js', '[19,"th",null,"/js/devsite_app_module.js","https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f","https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource","https://androidsource-dot-google-developers.gonglchuangl.net",1,null,["/_pwa/androidsource/manifest.json","https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/images/video-placeholder.svg","https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/images/favicon.png","https://www.gstatic.cn/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/androidsource/images/lockup.svg","https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","source.android.google.cn","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["MiscFeatureFlags__developers_footer_dark_image","Profiles__enable_stripe_subscription_management","Search__enable_page_map","Profiles__enable_completequiz_endpoint","Profiles__enable_complete_playlist_endpoint","Cloud__enable_llm_concierge_chat","Cloud__enable_cloud_shell","Search__enable_dynamic_content_confidential_banner","Cloud__enable_legacy_calculator_redirect","DevPro__enable_cloud_innovators_plus","MiscFeatureFlags__enable_explain_this_code","Profiles__enable_awarding_url","MiscFeatureFlags__enable_variable_operator","Experiments__reqs_query_experiments","CloudShell__cloud_code_overflow_menu","MiscFeatureFlags__developers_footer_image","OnSwitch__enable","Profiles__enable_completecodelab_endpoint","Cloud__enable_cloud_shell_fte_user_flow","TpcFeatures__enable_unmirrored_page_left_nav","Concierge__enable_pushui","MiscFeatureFlags__enable_project_variables","Profiles__enable_release_notes_notifications","Cloud__enable_cloudx_experiment_ids","Profiles__enable_profile_collections","Cloud__enable_cloud_facet_chat","Profiles__enable_page_saving","MiscFeatureFlags__emergency_css","Search__enable_suggestions_from_borg","Profiles__enable_dashboard_curated_recommendations","Cloud__enable_cloud_dlp_service","CloudShell__cloud_shell_button","DevPro__enable_developer_subscriptions","MiscFeatureFlags__enable_view_transitions","Cloud__enable_free_trial_server_call","Analytics__enable_clearcut_logging","BookNav__enable_tenant_cache_key","Search__enable_ai_eligibility_checks","Cloud__enable_cloudx_ping","Profiles__enable_developer_profiles_callout","Profiles__enable_join_program_group_endpoint","EngEduTelemetry__enable_engedu_telemetry","Profiles__enable_recognition_badges","TpcFeatures__enable_mirror_tenant_redirects","Profiles__require_profile_eligibility_for_signin","MiscFeatureFlags__enable_firebase_utm","Profiles__enable_public_developer_profiles"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.googleapis.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[19,"androidsource_china","Android Open Source Project","source.android.google.cn",null,"androidsource-dot-google-developers.gonglchuangl.net",null,null,null,null,[29,null,null,null,null,null,"/images/lockup.svg","/images/touchicon-180.png",null,null,null,1,null,1,null,null,null,null,null,null,null,1],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1],null,null,[[null,null,null,null,null,null,null,[["G-K8DD4HTCSG"],null,null,[["G-K8DD4HTCSG",1]]]]],null,4],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m",1]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10