![ไอคอน HAL ของ Android TV](https://source.android.google.cn/static/docs/devices/tv/images/ape_fwk_hal_tv.png?authuser=0&hl=th)
เฟรมเวิร์กอินพุต Android TV (TIF) ช่วยให้การส่งเนื้อหาสดไปยัง Android TV ง่ายขึ้น Android TIF มี API มาตรฐานสำหรับผู้ผลิตในการสร้างข้อบังคับของอินพุตสำหรับควบคุม Android TV และเปิดใช้การค้นหาและคำแนะนำรายการทีวีสดผ่านข้อมูลเมตาที่เผยแพร่โดยอินพุตทีวี
เฟรมเวิร์กนี้ไม่ได้มีจุดประสงค์เพื่อนำมาตรฐานทีวีหรือข้อกำหนดระดับภูมิภาคมาใช้ แต่ช่วยให้ผู้ผลิตอุปกรณ์ปฏิบัติตามมาตรฐานการออกอากาศทีวีดิจิทัลระดับภูมิภาคได้ง่ายขึ้นโดยไม่ต้องติดตั้งใช้งานใหม่ เอกสารประกอบในส่วนนี้อาจเป็นประโยชน์ต่อนักพัฒนาแอปบุคคลที่สามที่ต้องการสร้างอินพุตทีวีที่กำหนดเองด้วย
คอมโพเนนต์
การใช้งานเฟรมเวิร์กอินพุต Android TV ประกอบด้วยเครื่องมือจัดการอินพุตทีวี TIF ใช้งานได้กับแอปทีวี ซึ่งเป็นแอประบบที่ไม่สามารถแทนที่ด้วยแอปของบุคคลที่สามได้ เพื่อเข้าถึงช่องในตัวและช่องจากเครื่องรับสัญญาณ IP แอปทีวีจะสื่อสารกับโมดูลอินพุตทีวีที่ผู้ผลิตอุปกรณ์หรือบุคคลอื่นจัดหาให้ผ่านตัวจัดการอินพุตทีวี
เฟรมเวิร์กอินพุตทีวีประกอบด้วยสิ่งต่อไปนี้
- ผู้ให้บริการทีวี (
com.android.providers.tv.TvProvider
): ฐานข้อมูลของช่อง รายการ และสิทธิ์ที่เกี่ยวข้อง - แอปทีวี (
com.android.tv.TvActivity
): แอปที่จัดการการโต้ตอบของผู้ใช้ - ตัวจัดการอินพุตทีวี (
android.media.tv.TvInputManager
): อนุญาตให้อินพุตทีวีสื่อสารกับแอปทีวี - อินพุตทีวี: แอปที่แสดงตัวรับสัญญาณและพอร์ตอินพุตจริงหรือเสมือน
- HAL ของอินพุตทีวี (
tv_input
โมดูล): การกําหนดฮาร์ดแวร์ที่อนุญาตให้อินพุตทีวีของระบบเข้าถึงฮาร์ดแวร์เฉพาะของทีวีเมื่อติดตั้งใช้งาน - การควบคุมโดยผู้ปกครอง: เทคโนโลยีที่อนุญาตให้บล็อกช่องและรายการ
- HDMI-CEC: เทคโนโลยีที่ช่วยให้ควบคุมอุปกรณ์ต่างๆ ผ่าน HDMI จากระยะไกลได้
- เฟรมเวิร์กตัวรับสัญญาณ: เฟรมเวิร์กสำหรับอินพุตทีวีในตัว
- MediaCas: เฟรมเวิร์กสำหรับการเข้าถึงแบบมีเงื่อนไข
- ตัวจัดการทรัพยากรตัวรับสัญญาณ: บริการสำหรับจัดการทรัพยากรฮาร์ดแวร์สำหรับอินพุตทีวี, MediaCas และอินพุตตัวรับสัญญาณในตัว
คอมโพเนนต์เหล่านี้มีรายละเอียดอยู่ด้านล่าง ดูภาพรายละเอียดของสถาปัตยกรรมเฟรมเวิร์กอินพุต Android TV ได้ในแผนภาพต่อไปนี้
![ภาพรวมสถาปัตยกรรม TIF ของ Android](https://source.android.google.cn/static/docs/devices/tv/images/TIF_Overview.png?authuser=0&hl=th)
น้ำไหล
วิธีการทํางานของสถาปัตยกรรมมีดังนี้
- ผู้ใช้จะเห็นและโต้ตอบกับแอปทีวี ซึ่งเป็นแอประบบที่แอปของบุคคลที่สามไม่สามารถแทนที่
- แอปทีวีจะแสดงเนื้อหา AV จากอินพุตทีวี
- แอปทีวีไม่สามารถสื่อสารกับอินพุตทีวีโดยตรง เครื่องมือจัดการอินพุตทีวีจะระบุสถานะของอินพุตทีวีสำหรับแอปทีวี โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อจำกัดเหล่านี้ที่เครื่องมือจัดการอินพุตทีวีด้านล่าง
สิทธิ์
- เฉพาะ
signatureOrSystem
อินพุตทีวีและแอปทีวีเท่านั้นที่มีสิทธิ์เข้าถึงฐานข้อมูลของผู้ให้บริการทีวีอย่างเต็มรูปแบบและสามารถรับ KeyEvent ได้ - เฉพาะอินพุตทีวีของระบบเท่านั้นที่เข้าถึง HAL ของอินพุตทีวีผ่านบริการตัวจัดการอินพุตทีวีได้ อินพุตทีวีจะมีการเข้าถึงแบบหนึ่งต่อหนึ่งผ่านเซสชันโปรแกรมจัดการอินพุตทีวี
- อินพุตทีวีของบุคคลที่สามมีสิทธิ์เข้าถึงฐานข้อมูลผู้ให้บริการทีวีแบบล็อกแพ็กเกจ และจะอ่าน/เขียนได้เฉพาะแถวแพ็กเกจที่ตรงกันเท่านั้น
- อินพุตทีวีของบุคคลที่สามอาจแสดงเนื้อหาของตนเองหรือเนื้อหาจากอินพุตทีวี Passthrough ของผู้ผลิตอุปกรณ์ เช่น HDMI1 แต่จะแสดงเนื้อหาจากอินพุตทีวีที่ไม่ใช่การส่งผ่านไม่ได้ เช่น กล่องรับสัญญาณในตัวหรือ IPTV
- สิทธิ์
TV_INPUT_HARDWARE
สําหรับแอปอินพุตทีวีฮาร์ดแวร์ จะส่งสัญญาณให้บริการจัดการอินพุตทีวีแจ้งบริการอินพุตทีวีเมื่อบูตเพื่อเรียกบริการจัดการอินพุตทีวีและเพิ่มอินพุตทีวี สิทธิ์นี้ช่วยให้แอปอินพุตทีวีแบบฮาร์ดแวร์รองรับอินพุตทีวีหลายรายการต่อบริการอินพุตทีวี รวมถึงสามารถเพิ่มและนำอินพุตทีวีที่รองรับออกแบบไดนามิก
ผู้ให้บริการทีวี
ฐานข้อมูลของผู้ให้บริการทีวีจะจัดเก็บช่องและรายการจากอินพุตทีวี นอกจากนี้ ผู้ให้บริการทีวียังเผยแพร่และจัดการสิทธิ์ที่เกี่ยวข้องเพื่อให้ TV Input เห็นเฉพาะระเบียนของตนเอง ตัวอย่างเช่น อินพุตทีวีหนึ่งๆ จะดูได้เฉพาะช่องและรายการที่อินพุตนั้นให้ไว้ และไม่ได้รับอนุญาตให้เข้าถึงช่องและรายการของอินพุตทีวีอื่นๆ
ผู้ให้บริการทีวีจะแมป "ประเภทการออกอากาศ" กับ "ประเภทตามหลักเกณฑ์" ภายใน อินพุตของทีวีมีหน้าที่ป้อนข้อมูล "ประเภทการออกอากาศ" ด้วยค่าในมาตรฐานการออกอากาศที่เกี่ยวข้อง และช่อง "ประเภท Canonical" จะมีการเติมประเภทที่เกี่ยวข้องที่ถูกต้องจาก android.provider.TvContract.Genres
โดยอัตโนมัติ เช่น สำหรับการออกอากาศแบบมาตรฐาน ATSC A/65 และรายการที่เป็นประเภท 0x25 (หมายถึง "กีฬา") อินพุตทีวีจะป้อนข้อมูล "ประเภทการออกอากาศ" ด้วยสตริง "กีฬา" และผู้ให้บริการทีวีจะป้อนข้อมูลในช่อง "ประเภท Canonical" ด้วยค่า android.provider.TvContract.Genres.SPORTS
ที่แมปไว้
ดูแผนภาพด้านล่างเพื่อดูมุมมองโดยละเอียดของผู้ให้บริการทีวี
![ผู้ให้บริการ Android TV](https://source.android.google.cn/static/docs/devices/tv/images/TIF_TV_Provider.png?authuser=0&hl=th)
มีเพียงแอปในพาร์ติชันระบบที่มีสิทธิ์เท่านั้นที่อ่านฐานข้อมูลผู้ให้บริการทีวีได้ทั้งหมด
อินพุตทีวีแบบ Passthrough จะไม่จัดเก็บช่องและรายการ
นอกจากช่องมาตรฐานและรายการแล้ว ฐานข้อมูลของผู้ให้บริการทีวียังมีฟิลด์ประเภท BLOB COLUMN_INTERNAL_PROVIDER_DATA
ในแต่ละตารางที่อินพุตทีวีอาจใช้เพื่อจัดเก็บข้อมูลตามต้องการ ข้อมูล BLOB ดังกล่าวอาจมีข้อมูลที่กําหนดเอง เช่น ความถี่ของจูนเนอร์ที่เชื่อมโยง และอาจระบุไว้ในบัฟเฟอร์โปรโตคอลหรือรูปแบบอื่น ช่องที่ค้นหาได้มีไว้เพื่อทำให้บางช่องไม่สามารถใช้งานในการค้นหาได้ (เช่น เพื่อให้เป็นไปตามข้อกำหนดเฉพาะของแต่ละประเทศสำหรับการปกป้องเนื้อหา)
ตัวอย่างช่องฐานข้อมูล
ผู้ให้บริการทีวีรองรับข้อมูลที่มีโครงสร้างในตารางช่อง (android.provider.TvContract.Channels
) และรายการ (android.provider.TvContract.Programs
) ตารางเหล่านี้ป้อนข้อมูลและเข้าถึงโดยอินพุตทีวีและแอประบบ เช่น แอป TV ตารางเหล่านี้มีช่อง 4 ประเภทดังนี้
- การแสดงผล: ช่องแสดงผลมีข้อมูลที่แอป
อาจต้องการให้ผู้ใช้เห็น เช่น ชื่อ
(
COLUMN_DISPLAY_NAME
) หรือหมายเลข (COLUMN_DISPLAY_NUMBER
) หรือชื่อรายการที่กำลังดูอยู่ - ข้อมูลเมตา: มีช่อง 3 ช่องสำหรับระบุเนื้อหาตามมาตรฐานที่เกี่ยวข้อง เช่น รหัสสตรีมการขนส่งของช่อง (
COLUMN_TRANSPORT_STREAM_ID
) รหัสเครือข่ายต้นทาง (COLUMN_ORIGINAL_NETWORK_ID
) และรหัสบริการ (COLUMN_SERVICE_ID
) - ข้อมูลภายใน: ฟิลด์สำหรับการใช้งานที่กำหนดเองของข้อมูลทีวี
ช่องบางช่อง เช่นCOLUMN_INTERNAL_PROVIDER_DATA
เป็นช่องที่ปรับแต่งได้ ซึ่งเป็นช่อง BLOB ที่อินพุตทีวีสามารถจัดเก็บข้อมูลเมตาที่กำหนดเองเกี่ยวกับช่องหรือรายการได้ - แจ้งว่าไม่เหมาะสม: ช่องควรถูกจำกัดไม่ให้แสดงในการค้นหา เรียกดู หรือดูหรือไม่ การตั้งค่านี้ทำได้ที่ระดับช่องเท่านั้น โปรแกรมทั้งหมดจะเป็นไปตามการตั้งค่าในช่อง
COLUMN_SEARCHABLE
: การจำกัดการค้นหาจากบางช่องอาจเป็นสิ่งที่จําเป็นในบางภูมิภาคCOLUMN_SEARCHABLE = 0
หมายความว่าช่องไม่ควรแสดงในผลการค้นหาCOLUMN_BROWSABLE
: มองเห็นได้เฉพาะแอปพลิเคชันของระบบเท่านั้น การจํากัดไม่ให้แอปพลิเคชันเรียกดูแชแนลCOLUMN_BROWSABLE = 0
หมายความว่าไม่ควรรวมช่องนั้นไว้ในรายการช่องCOLUMN_LOCKED
: มองเห็นได้เฉพาะแอปพลิเคชันของระบบเท่านั้น การจำกัดไม่ให้บัญชีที่ไม่ถูกต้องดูช่องได้โดยไม่ต้องป้อนรหัส PINCOLUMN_LOCKED = 1
หมายความว่าช่องควรได้รับการปกป้องโดยการควบคุมโดยผู้ปกครอง
ดูรายการช่องแบบละเอียดได้ที่
android/frameworks/base/media/java/android/media/tv/TvContract.java
สิทธิ์และการควบคุมการเข้าถึง
ทุกคนที่มีสิทธิ์เข้าถึงแถวที่เกี่ยวข้องจะเห็นช่องทั้งหมด ผู้ใช้จะเข้าถึงช่องใดๆ ไม่ได้โดยตรง โดยจะเห็นเฉพาะสิ่งที่แอปทีวี แอประบบ หรืออินพุตทีวีแสดง
- แต่ละแถวจะมี
PACKAGE_NAME
ซึ่งก็คือแพ็กเกจ (แอป) ที่เป็นเจ้าของแถวนั้น ซึ่งตรวจสอบใน Query, Insert, Update ผ่าน TvProvider.java อินพุตทีวีอาจเข้าถึงเฉพาะข้อมูลที่เขียนไว้และปิดการเข้าถึงข้อมูลจากอินพุตอื่นๆ ของทีวี - สิทธิ์การอ่านและเขียนผ่าน AndroidManifest.xml (ต้องได้รับความยินยอมจากผู้ใช้) เพื่อระบุแชแนลที่ใช้ได้
- เฉพาะแอป
signatureOrSystem
เท่านั้นที่จะได้รับสิทธิ์ACCESS_ALL_EPG_DATA
เพื่อเข้าถึงทั้งฐานข้อมูล
เครื่องมือจัดการอินพุตทีวี
TV Input Manager มี API ระบบส่วนกลางสําหรับเฟรมเวิร์กอินพุตของ Android TV โดยรวม โดยทำหน้าที่เป็นสื่อกลางในการโต้ตอบระหว่างแอปกับอินพุตทีวี รวมถึงมีฟังก์ชันการควบคุมโดยผู้ปกครอง คุณต้องสร้างเซสชันตัวจัดการอินพุตทีวีแบบ 1:1 กับอินพุตทีวี เครื่องมือจัดการอินพุตทีวีจะอนุญาตให้เข้าถึงอินพุตทีวีที่ติดตั้งไว้เพื่อให้แอปดำเนินการต่อไปนี้ได้
- แสดงรายการอินพุตของทีวีและตรวจสอบสถานะ
- สร้างเซสชันและจัดการผู้ฟัง
สำหรับเซสชัน แอปทีวีอาจปรับแต่งอินพุตทีวีเป็น URI ที่เพิ่มลงในฐานข้อมูลของผู้ให้บริการทีวีเท่านั้น ยกเว้นอินพุตทีวีที่ส่งผ่านซึ่งปรับแต่งได้โดยใช้ TvContract.buildChannelUriForPassthroughInput()
อินพุตของทีวีอาจตั้งค่าระดับเสียงเอาไว้ด้วย อินพุตทีวีที่ให้บริการและรับรองโดยผู้ผลิตอุปกรณ์ (แอปลายเซ็น) หรือแอปอื่นๆ ที่ติดตั้งในพาร์ติชันระบบจะมีสิทธิ์เข้าถึงฐานข้อมูลของผู้ให้บริการทีวีทั้งหมด สิทธิ์เข้าถึงนี้สามารถใช้ในการสร้างแอปเพื่อเรียกดูและค้นหาช่องและรายการทีวีทั้งหมดที่มีให้บริการ
แอปอาจสร้างและลงทะเบียน TvInputCallback
กับ android.media.tv.TvInputManager
เพื่อให้ระบบเรียกกลับเมื่ออินพุตทีวีมีการเปลี่ยนแปลงสถานะ หรือเมื่อมีการเพิ่มหรือนำอินพุตทีวีออก ตัวอย่างเช่น แอปทีวีสามารถตอบสนองได้เมื่ออินพุตทีวีถูกตัดการเชื่อมต่อ โดยแสดงสถานะว่ายกเลิกการเชื่อมต่อและป้องกันไม่ให้เลือก
เครื่องมือจัดการอินพุตทีวีจะจัดการการสื่อสารระหว่างแอปทีวีกับอินพุตทีวี อินเทอร์เฟซมาตรฐานของเครื่องมือจัดการอินพุตทีวีและอินพุตทีวีช่วยให้ผู้ผลิตอุปกรณ์หลายรายสร้างแอปทีวีของตนเองได้ ทั้งยังช่วยให้อินพุตทีวีของบุคคลที่สามทั้งหมดทำงานในแอปทีวีทั้งหมดได้
อินพุตทีวี
อินพุตทีวีเป็นแอป Android ในแง่ที่มีไฟล์ AndroidManifest.xml และติดตั้งแล้ว (ผ่าน Play, ติดตั้งไว้ล่วงหน้า หรือโหลดจากแหล่งที่ไม่รู้จัก) Android TV รองรับแอประบบที่ติดตั้งไว้ล่วงหน้า แอปที่รับรองโดยผู้ผลิตอุปกรณ์ และอินพุตทีวีของบุคคลที่สาม
อินพุตบางรายการ เช่น อินพุต HDMI หรืออินพุตของจูนเนอร์ในตัว จะต้องมาจากผู้ผลิตเท่านั้น เนื่องจากอินพุตเหล่านี้จะสื่อสารกับฮาร์ดแวร์ที่เกี่ยวข้องโดยตรง ส่วนแอปอื่นๆ เช่น IPTV, การจำลองสถานที่ และ STB ภายนอก บุคคลที่สามสามารถจัดหาแอปเหล่านี้เป็น APK ใน Google Play Store ได้ เมื่อดาวน์โหลดและติดตั้งแล้ว คุณสามารถเลือกอินพุตใหม่ภายในแอป TV ได้
ตัวอย่างอินพุตการส่งผ่าน
![อินพุตระบบ Android TV](https://source.android.google.cn/static/docs/devices/tv/images/TIF_HDMI_TV_Input.png?authuser=0&hl=th)
ในตัวอย่างนี้ อินพุตทีวีที่ผู้ผลิตอุปกรณ์ให้ไว้เชื่อถือได้และเข้าถึงผู้ให้บริการทีวีได้อย่างเต็มที่ ในฐานะอินพุตทีวีแบบส่งผ่าน อุปกรณ์นี้จะไม่ลงทะเบียนช่องหรือรายการใดๆ กับผู้ให้บริการทีวี หากต้องการรับ URI ที่ใช้อ้างอิงอินพุต Passthrough ให้ใช้android.media.tv.TvContract
วิธียูทิลิตีbuildChannelUriForPassthroughInput(String inputId)
แอปทีวีจะสื่อสารกับตัวจัดการอินพุตทีวีเพื่อเข้าถึงอินพุต HDMI ของทีวี
ตัวอย่างเครื่องรับสัญญาณในตัว
![อินพุตตัวรับสัญญาณในตัวของ Android TV](https://source.android.google.cn/static/docs/devices/tv/images/Built-in_Tuner_TV_Input.png?authuser=0&hl=th)
ในตัวอย่างนี้ อินพุตทีวีจากจูนเนอร์ในตัวที่ผู้ผลิตอุปกรณ์ให้ไว้เชื่อถือได้และมีสิทธิ์เข้าถึงผู้ให้บริการทีวีอย่างเต็มรูปแบบ
ตัวอย่างอินพุตของบุคคลที่สาม
![อินพุตของบุคคลที่สามใน Android TV](https://source.android.google.cn/static/docs/devices/tv/images/Third-party_Input_HDMI.png?authuser=0&hl=th)
ในตัวอย่างนี้ อินพุตทีวี STB ภายนอกมาจากบุคคลที่สาม เนื่องจากอินพุตทีวีดังกล่าวเข้าถึงฟีดวิดีโอ HDMI ที่เข้ามาโดยตรงไม่ได้ จึงต้องผ่านตัวจัดการอินพุตทีวีและใช้อินพุต HDMI ของทีวีที่ผู้ผลิตอุปกรณ์ให้มา
อินพุตทีวี STB ภายนอกสามารถสื่อสารกับอินพุต HDMI ของทีวีผ่านตัวจัดการอินพุตทีวีและขอให้แสดงวิดีโอบน HDMI1 ดังนั้นอินพุตทีวี STB จึงควบคุมทีวีได้ ในขณะที่อินพุตทีวี HDMI ที่ผู้ผลิตกำหนดให้แสดงผลวิดีโอ
ตัวอย่างการแสดงภาพซ้อนภาพ (PIP)
![เหตุการณ์สำคัญของ Android TV](https://source.android.google.cn/static/docs/devices/tv/images/TIF_PIP-PAP.png?authuser=0&hl=th)
แผนภาพด้านบนแสดงวิธีที่ระบบส่งปุ่มบนรีโมตคอนโทรลไปยังอินพุตทีวีที่เจาะจงสำหรับการแสดงภาพซ้อนภาพ (PIP) การกดปุ่มเหล่านั้นจะได้รับการตีความโดยไดรเวอร์ฮาร์ดแวร์ที่ผู้ผลิตอุปกรณ์ให้มา โดยแปลงสแกนครื่องฮาร์ดแวร์เป็นคีย์โค้ด Android และส่งไปยังไปป์ไลน์อินพุตมาตรฐานของ Android ฟังก์ชัน InputReader
และ InputDispatcher
จะทำงานเป็น KeyEvents
ซึ่งจะทริกเกอร์เหตุการณ์ในแอปทีวีหากอยู่ในโฟกัส
เฉพาะอินพุตทีวีของระบบเท่านั้นที่มีสิทธิ์ได้รับ InputEvents
และก็ต่อเมื่อมีสิทธิ์ของระบบ RECEIVE_INPUT_EVENT
อินพุตทีวีมีหน้าที่รับผิดชอบในการพิจารณาว่าจะใช้ InputEvents ใด และควรอนุญาตให้แอปทีวีจัดการคีย์ที่ไม่จำเป็นต้องใช้
แอปทีวีมีหน้าที่รับผิดชอบในการทราบว่าอินพุตทีวีของระบบใดที่ใช้งานอยู่ ซึ่งหมายความว่าผู้ใช้เป็นผู้เลือก และเพื่อแยกแยะ KeyEvents
ที่เข้ามาและส่งไปยังเซสชันตัวจัดการอินพุตทีวีที่ถูกต้อง โดยเรียกใช้ dispatchInputEvent()
เพื่อส่งต่อเหตุการณ์ไปยังอินพุตทีวีที่เชื่อมโยง
ตัวอย่างอินพุต MHEG-5
แผนภาพต่อไปนี้แสดงมุมมองโดยละเอียดมากขึ้นเกี่ยวกับวิธีกำหนดเส้นทาง KeyEvents
ผ่าน TIF ของ Android
![ตัวอย่างปุ่มสีแดงของ Android TV](https://source.android.google.cn/static/docs/devices/tv/images/TIF_MHEG5_app.png?authuser=0&hl=th)
รูปภาพแสดงขั้นตอนของแอปปุ่มสีแดง ซึ่งเป็นแอปที่พบได้ทั่วไปในยุโรปสำหรับให้ผู้ใช้เข้าถึงแอปแบบอินเทอร์แอกทีฟบนทีวี ระบบสามารถส่งแอปผ่านสตรีมการนำส่งนี้ได้ เมื่อคลิกปุ่ม ก็จะสามารถโต้ตอบกับแอป ประกาศเหล่านี้ ตัวอย่างเช่น คุณอาจใช้แอปออกอากาศเหล่านี้เพื่อเข้าถึงหน้าเว็บหรือคะแนนการแข่งขันที่เกี่ยวข้อง
ดูส่วนแอปออกอากาศเพื่อดูวิธีที่แอปออกอากาศโต้ตอบกับแอปทีวี
ในตัวอย่างนี้
- แอปทีวีอยู่ในโฟกัสและได้รับคีย์ทั้งหมด
KeyEvents
(เช่น ปุ่มสีแดง) ส่งไปยังทีวีที่ใช้งานอยู่ ป้อนเป็นInputEvents.
- อินพุตทีวีของระบบผสานรวมกับสแต็ก MHEG-5 และมีสิทธิ์
ของระบบ
RECEIVE_INPUT_EVENT
- เมื่อได้รับรหัสคีย์เปิดใช้งาน (เช่น ปุ่มสีแดง) อินพุตทีวีจะเปิดใช้งานแอปออกอากาศ
- อินพุตทีวีใช้
KeyEvents
เป็นInputEvents
และแอปออกอากาศเป็นโฟกัสและจัดการInputEvents
จนกว่าจะปิด
หมายเหตุ: อินพุตทีวีของบุคคลที่สามจะไม่ได้รับคีย์
HAL อินพุตทีวี
HAL อินพุตทีวีจะช่วยพัฒนาอินพุตทีวีเพื่อเข้าถึงฮาร์ดแวร์เฉพาะสำหรับทีวี
เช่นเดียวกับ HAL อื่นๆ ของ Android TV Input HAL (tv_input
) จะอยู่ในซอร์สทรีของ AOSP และผู้ให้บริการจะเป็นผู้พัฒนาการใช้งาน
หมายเหตุ: ตั้งแต่ Android 14 เป็นต้นไป ระบบจะกำหนดอินเทอร์เฟซ HAL ของอินพุตทีวีโดยใช้ AIDL
แอปทีวี
แอป System TV นำเสนอเนื้อหารายการทีวีสดแก่ผู้ใช้ แอปทีวีอ้างอิง (Live TV) มีให้ใช้งานพร้อมกับแพลตฟอร์ม Android ซึ่งผู้ผลิตอุปกรณ์สามารถใช้แอปนี้ตามที่เป็นอยู่ ปรับแต่ง ขยาย หรือแทนที่ ซอร์สโค้ดมีอยู่ในโครงการโอเพนซอร์ส Android และคุณเริ่มต้นใช้งานได้ในบทความแอป Reference TV
ผู้ผลิตอุปกรณ์อาจขยายการให้บริการแอปทีวีของตนเพื่อใช้ฟีเจอร์สำหรับผู้ผลิตอุปกรณ์หรือฟีเจอร์เฉพาะประเทศ แต่ก็ไม่ได้อยู่ในขอบเขตของ TIF หรือแอปทีวีอ้างอิง
แอปทีวีของระบบต้องจัดการงานต่อไปนี้เป็นอย่างน้อย
การตั้งค่าและการกำหนดค่า
- ตรวจหาอินพุตทีวีโดยอัตโนมัติ
- ให้อินพุตทีวีเริ่มการตั้งค่าช่อง
- ควบคุมการตั้งค่าโดยผู้ปกครอง
- แก้ไขช่อง
การดู
- เข้าถึงและไปยังส่วนต่างๆ ของช่องทีวีทั้งหมด
- เข้าถึงแถบข้อมูลรายการทีวี
- แสดงข้อมูลคู่มือโปรแกรมอิเล็กทรอนิกส์ (EPG)
- รองรับแทร็กเสียงและคำบรรยายหลายแทร็ก
- มอบการทดสอบ PIN สำหรับการควบคุมโดยผู้ปกครอง
- อนุญาตให้วางซ้อน UI อินพุตทีวีสำหรับมาตรฐานทีวี (HbbTV ฯลฯ)
- แสดงข้อมูลในผลการค้นหาสำหรับช่องและรายการทีวี
- แสดงการ์ดการลิงก์แอป
- รองรับ API การเปลี่ยนเวลา
- จัดการฟังก์ชัน DVR และรองรับ API การบันทึกทีวี
ชุดฟีเจอร์นี้จะเพิ่มขึ้นตามเวอร์ชัน Android ใหม่ที่มีการขยาย TIF API ของแพลตฟอร์ม CTS Verifier มอบการครอบคลุมการทดสอบความเข้ากันได้
การรองรับอินพุตทีวีของบุคคลที่สาม
Android TV มี API สําหรับนักพัฒนาแอปสําหรับอินพุตทีวีของบุคคลที่สาม ซึ่งช่วยให้แอปที่ติดตั้งไว้สามารถส่งช่องซอฟต์แวร์ไปยังประสบการณ์การรับชมรายการทีวีสดได้ แอป System TV มีหน้าที่รับผิดชอบบางอย่างเกี่ยวกับการแสดงอินพุตและช่องทีวีของบุคคลที่สามให้ผู้ใช้เห็นเพื่อให้สามารถใช้งานอุปกรณ์ Android ที่เข้ากันได้ แอปทีวีสดอ้างอิงมีการใช้งานที่เข้ากันได้ หากต้องการแทนที่แอปทีวีของระบบ ผู้ผลิตอุปกรณ์ต้องตรวจสอบว่าแอปของตัวเองมีความเข้ากันได้ในลักษณะเดียวกัน เพื่อให้เป็นไปตามความคาดหวังของนักพัฒนาแอปในอุปกรณ์ Android TV ทั้งหมด
แอปทีวีของระบบต้องแสดงอินพุตของบุคคลที่สามควบคู่ไปกับบริการทีวีสดเริ่มต้นของอุปกรณ์ ประโยชน์ของ API สําหรับนักพัฒนาแอปคือผู้ใช้จะค้นหาช่องได้ (เมื่อติดตั้งแล้ว) ผ่านประสบการณ์การใช้งานทีวีแบบมาตรฐาน
อนุญาตให้แยกความแตกต่างของรูปลักษณ์ระหว่างช่องในตัวกับช่องของบุคคลที่สาม ตามที่ระบุไว้ในส่วนแอปทีวีของ CDD ของ Android
ส่วนต่อไปนี้จะแสดงวิธีที่แอปพลิเคชัน Live TV ปฏิบัติตามข้อกำหนดของ CDD
การตั้งค่าช่องใหม่
การเพิ่มอินพุต/ช่องของบุคคลที่สามใหม่เริ่มต้นด้วยผู้ใช้ค้นหาและติดตั้งอินพุตทีวีจาก App Store เช่น Google Play
อินพุตทีวีของบุคคลที่สามบางรายการจะเพิ่มช่องลงในฐานข้อมูล TvProvider โดยอัตโนมัติ แต่ส่วนใหญ่จะมีกิจกรรมการตั้งค่าเพื่อให้ผู้ใช้ตั้งค่าแชแนล ระบุรายละเอียดการเข้าสู่ระบบ และดำเนินการอื่นๆ ได้ แอป TV ของระบบต้องตรวจสอบว่าผู้ใช้เปิดใช้งานกิจกรรมการตั้งค่านี้ได้ ซึ่งเป็นเหตุผลที่ CDD กำหนดให้อินพุตของบุคคลที่สามทำให้การนำทางออกจากแอปทีวีหลักน้อยที่สุด
แอปรายการทีวีสดอ้างอิงจะมีเมนูแหล่งที่มาของช่องสำหรับการเข้าถึงอินพุต
![ไปที่การตั้งค่า](https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_settings.png?authuser=0&hl=th)
![ไปที่ "แหล่งที่มาของช่อง" ในการตั้งค่า](https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_channel_sources.png?authuser=0&hl=th)
![เลือกแหล่งที่มาจากรายการ](https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_sources.png?authuser=0&hl=th)
![เพิ่มช่องจากแหล่งที่มาของคุณ](https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_Add_channel.png?authuser=0&hl=th)
นอกจากนี้ จะมีการ์ดการแจ้งเตือนแสดงที่ด้านบนของเมนูแอป TV หลังจากติดตั้ง TvInput ใหม่แล้ว เพื่อนำผู้ใช้ไปยังการตั้งค่าโดยตรง โดยทำดังนี้
![การแจ้งเตือนที่แสดงแหล่งที่มาของช่องใหม่พร้อมใช้งานแล้ว](https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_set_up_sources.png?authuser=0&hl=th)
หากผู้ใช้ดำเนินการผ่านข้อความแจ้ง ผู้ใช้สามารถเลือกตั้งค่าแหล่งที่มาได้ดังที่แสดงในรูปที่ 10
ดูกำหนดบริการอินพุตทีวีเพื่อดูสิ่งที่นักพัฒนาแอปคาดหวังในส่วนนี้
ปรับแต่งรายการช่อง
ผู้ผลิตอุปกรณ์อาจให้บริการ UI เพื่อซ่อนบางช่องและอนุญาตให้ผู้ใช้จัดการ EPG ของตนเอง รายการทีวีสดมีบริการดังกล่าวด้วย
![เปิดรายการช่องในการตั้งค่า](https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_channel_list.png?authuser=0&hl=th)
![ปรับแต่งรายการช่อง](https://source.android.google.cn/static/docs/devices/tv/images/LiveChannels_customize_channel-list.png?authuser=0&hl=th)
EPG
นักพัฒนาอินพุตบุคคลที่สามต้องมั่นใจว่าผู้ใช้สามารถไปยังช่องของตนได้อย่างง่ายดายในระหว่างการใช้งานทั่วไปในอุปกรณ์ Android TV ที่เข้ากันได้ทั้งหมด
ช่องจากอินพุตของบุคคลที่สามต้องแสดงเป็นส่วนหนึ่งของ EPG ประสบการณ์การรับชมรายการสดแบบมาตรฐานของอุปกรณ์ คุณใช้การแยกภาพหรือแยกหมวดหมู่สำหรับช่องของบุคคลที่สามได้ (ดูส่วนแอปทีวีของ CDD ของ Android) โดยสิ่งสำคัญคือผู้ใช้ต้องค้นหาช่องที่ติดตั้งไว้ได้
ค้นหา
ผู้ผลิตต้องใช้แอป TV เพื่อรวมผลการค้นหาสำหรับคำขอการค้นหาทั่วโลกเพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด รายการทีวีสดมีการใช้งาน (ดู ซึ่งให้ผลลัพธ์จากอินพุตของบุคคลที่สาม (จําเป็นสําหรับความเข้ากันได้ของแพลตฟอร์ม) รวมถึงอินพุตในตัว
การเลื่อนเวลา
สำหรับอุปกรณ์ที่ใช้ Android 6.0 ขึ้นไป แอปทีวีต้องรองรับ API การเปลี่ยนเวลาของเฟรมเวิร์ก Android นอกจากนี้ ผู้ผลิตยังต้องใช้การควบคุมการเล่นในแอปทีวี ซึ่งช่วยให้ผู้ใช้หยุดชั่วคราว เล่นต่อ กรอกลับ และกรอไปข้างหน้าได้
สำหรับอินพุตทีวีที่รองรับการเปลี่ยนเวลา แอปทีวีจะต้องแสดงตัวควบคุมการเล่น
![ตัวควบคุมการเล่น](https://source.android.google.cn/static/docs/devices/tv/images/TIF_timeshift.png?authuser=0&hl=th)
DVR
สำหรับอุปกรณ์ที่ใช้ Android 7.0 ขึ้นไป แอปทีวีต้องรองรับ TV recording API ของเฟรมเวิร์ก Android เพื่อรองรับ แสดงรายการ และเล่นรายการที่บันทึกไว้
ซึ่งช่วยให้ผู้ผลิตอุปกรณ์สามารถเสียบระบบย่อย DVR เข้ากับ TIF และลดความพยายามในการผสานรวมที่จำเป็นในการเปิดใช้หรือผสานรวมฟังก์ชันการทำงานของ DVR ในอุปกรณ์ทีวีได้อย่างมาก นอกจากนี้ ยังช่วยให้บุคคลที่สามสามารถจัดหาระบบ DVR หลังการขายที่เสียบเข้ากับอุปกรณ์ Android TV ได้
นอกจากการบันทึกเนื้อหาสดแล้ว แอปทีวียังจัดการทรัพยากรที่ทับซ้อนกันด้วย เช่น หากอุปกรณ์มีตัวรับสัญญาณ 2 ตัว ก็จะบันทึกรายการทีวีได้ 2 รายการพร้อมกัน หากผู้ใช้ขอให้บันทึก 3 รายการ แอปทีวีต้องจัดการกับความขัดแย้งและควรแสดงการแจ้งเตือนหรือขอให้ผู้ใช้กำหนดลำดับความสำคัญของคำขอเหล่านี้
แอปทีวียังใช้ตรรกะที่ซับซ้อนมากขึ้นได้ด้วย เช่น เมื่อผู้ใช้ขอบันทึกตอนหนึ่ง แอปจะถามว่าผู้ใช้ต้องการบันทึกตอนที่เหลือทั้งหมดของซีรีส์ไหม
ดูภาพรวมการใช้งาน DVR ที่เป็นไปได้ใน Android TV ได้จากแผนภาพต่อไปนี้
![การบันทึกวิดีโอดิจิทัลใน Android TV](https://source.android.google.cn/static/docs/devices/tv/images/TV_Input_DVR.png?authuser=0&hl=th)
- บริการอินพุตทีวีจะบอกแอปทีวีว่ามีตัวรับสัญญาณกี่ตัวเพื่อให้แอปทีวีจัดการกับทรัพยากรที่อาจเกิดข้อขัดแย้งได้
- แอปทีวีได้รับคําขอที่ผู้ใช้เริ่มบันทึกรายการทีวี
- แอป TV จะจัดเก็บกำหนดการบันทึกไว้ในฐานข้อมูลภายใน
- เมื่อถึงเวลาบันทึก แอป TV จะส่งคำขอให้ปรับจูนไปยังช่องที่เชื่อมโยงกับการบันทึก
- บริการอินพุตทีวีจะรับคําขอนี้ ตอบกลับว่ามีทรัพยากรที่เหมาะสมหรือไม่ และปรับช่อง
- จากนั้นแอปทีวีจะส่งคําขอเริ่มบันทึกไปยังตัวจัดการอินพุตทีวี
- บริการอินพุตทีวีจะรับคําขอนี้และเริ่มบันทึก
- บริการอินพุตทีวีจะจัดเก็บข้อมูลวิดีโอจริงไว้ในพื้นที่เก็บข้อมูล ซึ่งอาจเป็นพื้นที่เก็บข้อมูลภายนอกหรือพื้นที่เก็บข้อมูลระบบคลาวด์
- เมื่อถึงเวลาสิ้นสุดการบันทึก แอปทีวีจะส่งคําขอหยุดบันทึกไปยังตัวจัดการอินพุตทีวี
- เมื่อบริการอินพุตทีวีได้รับคำขอ บริการจะหยุดการบันทึกและเพิ่มข้อมูลเมตาที่เกี่ยวข้องไปยังผู้ให้บริการทีวีเพื่อให้แอปทีวีแสดงการบันทึกแก่ผู้ใช้เมื่อได้รับคำขอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์การบันทึกในบริการอินพุตทีวีได้ที่บทความการบันทึกทีวีนี้
แหล่งข้อมูลที่มีประโยชน์
- Android CDD และ API สำหรับนักพัฒนาซอฟต์แวร์ที่บันทึกไว้ในเอกสารประกอบเป็นข้อมูลอ้างอิงที่สมบูรณ์
- CTS Verifier จะทดสอบ API เป็นส่วนหนึ่งของโปรแกรมการทดสอบความเข้ากันได้ การใช้ฟีเจอร์นี้กับรายการทีวีสดอาจเป็นวิธีที่มีประโยชน์ในการดู EPG, การค้นหา, การควบคุมโดยผู้ปกครอง และข้อกำหนดอื่นๆ ในบริบทของอินพุตของบุคคลที่สาม
- ดูกำหนดบริการอินพุตทีวีเพื่อดูสิ่งที่นักพัฒนาแอปคาดหวังในส่วนนี้
การควบคุมโดยผู้ปกครอง
การควบคุมโดยผู้ปกครองให้ผู้ใช้บล็อกช่องและโปรแกรมที่ไม่พึงประสงค์ได้ แต่จะข้ามการบล็อกได้ด้วยการป้อนรหัส PIN
ความรับผิดชอบต่อฟังก์ชันการควบคุมโดยผู้ปกครองแชร์กันระหว่างแอปทีวี บริการเครื่องมือจัดการอินพุตทีวี ผู้ให้บริการทีวี และอินพุตทีวี
การควบคุมโดยผู้ปกครองเป็นสิ่งจำเป็นและอยู่ภายใต้ CTS Verifier
หลายประเทศได้กำหนดระบบการจัดประเภทที่อินพุตทีวีสามารถใช้ผ่าน TVContentRating API นอกจากนี้ อินพุตทีวียังลงทะเบียนระบบการจัดประเภทที่กำหนดเองได้ ซึ่งเห็นได้จากการทดสอบของ CTS Verifier ซึ่งช่วยแนะนำการจัดประเภท "ปลอม" สำหรับประเทศที่มีระบบการจัดประเภทมาตรฐาน เราขอแนะนำให้ผู้ผลิตอุปกรณ์รวมการควบคุมโดยผู้ปกครองของเฟรมเวิร์กอินพุตทีวีเข้ากับกลไกอื่นๆ ที่อาจรวมไว้ด้วย
ผู้ให้บริการโทรทัศน์
แถวช่องแต่ละแถวจะมีช่อง COLUMN_LOCKED
ที่ใช้ล็อกช่องใดช่องหนึ่งไม่ให้ดูได้โดยไม่ต้องป้อนรหัส PIN ช่องโปรแกรม
COLUMN_CONTENT_RATING
มีไว้สำหรับแสดงผลและไม่ได้ใช้ในการบังคับใช้การควบคุมโดยผู้ปกครอง
เครื่องมือจัดการอินพุตทีวี
TV Input Manager จะจัดเก็บ TvContentRating
ที่ถูกบล็อกทุกรายการและตอบสนองต่อ isRatingBlocked()
เพื่อแนะนำว่าควรบล็อกเนื้อหาที่มีการจัดประเภทที่ระบุหรือไม่
อินพุตทีวี
อินพุตทีวีจะตรวจสอบว่าควรบล็อกเนื้อหาปัจจุบันหรือไม่โดยเรียกใช้ isRatingBlocked()
ในเครื่องมือจัดการอินพุตทีวีเมื่อการจัดประเภทของเนื้อหาที่แสดงมีการเปลี่ยนแปลง (เมื่อเปลี่ยนรายการหรือช่อง) หรือการตั้งค่าการควบคุมโดยผู้ปกครองมีการเปลี่ยนแปลง (ใน ACTION_BLOCKED_RATINGS_CHANGED
และ ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
) หากควรบล็อกเนื้อหา อินพุตทีวีจะปิดใช้เสียงและวิดีโอ และแจ้งให้แอปทีวีทราบว่าเนื้อหาปัจจุบันถูกบล็อกโดยเรียกใช้ notifyContentBlocked(TvContentRating)
หากเนื้อหาไม่ควรถูกบล็อก อินพุตทีวีจะเปิดใช้เสียงและวิดีโอ และแจ้งให้แอปทีวีทราบว่าเนื้อหาปัจจุบันได้รับอนุญาตโดยเรียกใช้ notifyContentAllowed()
แอปทีวี
แอป TV ของระบบต้องมีวิธีให้ผู้ใช้จัดการการควบคุมโดยผู้ปกครองได้ ซึ่งรวมถึงการจัดประเภทแบบกำหนดเองที่ลงทะเบียนโดยแอปใดแอปหนึ่ง เพื่อให้เป็นไปตามข้อกำหนด API การควบคุมโดยผู้ปกครอง และสร้างแพลตฟอร์มที่เข้ากันได้
แอปทีวีจะแสดง UI รหัส PIN เมื่ออินพุตทีวีแจ้งว่าเนื้อหาปัจจุบันถูกบล็อก หรือเมื่อผู้ใช้พยายามดูช่องที่บล็อก
แอปทีวีไม่ได้จัดเก็บการตั้งค่าการควบคุมโดยผู้ปกครองโดยตรง เมื่อผู้ใช้เปลี่ยนการตั้งค่าการควบคุมโดยผู้ปกครอง TvContentRating
ที่ถูกบล็อกทั้งหมดจะจัดเก็บโดยเครื่องมือจัดการอินพุตทีวี และช่องที่ถูกบล็อกจะจัดเก็บโดยผู้ให้บริการทีวี
แอปทีวีต้องประกาศสิทธิ์ android.permission.MODIFY_PARENTAL_CONTROLS
เพื่อเปลี่ยนการตั้งค่าการควบคุมโดยผู้ปกครอง
เราขอแนะนำให้ผู้ผลิตอุปกรณ์ดำเนินการต่อไปนี้
- ทดสอบการควบคุมโดยผู้ปกครองของ CTS Verifier กับแอปพลิเคชันรายการทีวีสดอ้างอิงเพื่อสาธิตข้อกำหนดด้านความเข้ากันได้
- ใช้แอปทีวีสดเป็นข้อมูลอ้างอิงสำหรับแอปทีวีของตนเอง โดยเฉพาะอย่างยิ่งดูแหล่งที่มาของ ContentRatingsManager และ RatingSystemsFragment รวมถึงวิธีที่แอปจัดการการจัดประเภทที่กำหนดเอง
HDMI-CEC
HDMI-CEC ช่วยให้อุปกรณ์หนึ่งควบคุมอุปกรณ์อีกเครื่องหนึ่งได้ จึงใช้รีโมตตัวเดียวควบคุมเครื่องใช้ไฟฟ้าหลายเครื่องในโฮมเธียเตอร์ได้ Android TV ใช้เพื่อเร่งการตั้งค่าและอนุญาตให้ควบคุมอินพุตทีวีต่างๆ จากระยะไกลผ่านแอปทีวีส่วนกลาง เช่น อาจสลับอินพุต เปิดหรือปิดอุปกรณ์ และอื่นๆ
TIF ของ Android ใช้ HDMI-CEC เป็นบริการควบคุม HDMI เพื่อให้ผู้ผลิตอุปกรณ์ไม่ต้องพัฒนาไดรเวอร์ระดับต่ำที่โต้ตอบกับ HAL ของ Android TV น้ำหนักเบา โดยข้ามตรรกะทางธุรกิจที่ซับซ้อนกว่าไป Android พยายามลดปัญหาความเข้ากันได้โดยลดการใช้งานแบบแยกส่วนและการสนับสนุนฟีเจอร์เฉพาะด้าน เพื่อให้มีการติดตั้งใช้งานตามมาตรฐาน บริการควบคุม HDMI ใช้บริการที่มีอยู่ของ Android ซึ่งรวมถึงอินพุตและการเปิด/ปิด
ซึ่งหมายความว่าการใช้งาน HDMI-CEC ที่มีอยู่จะต้องได้รับการออกแบบใหม่เพื่อให้ทำงานร่วมกับ TIF ของ Android ได้ เราขอแนะนำให้แพลตฟอร์มฮาร์ดแวร์มีไมโครโปรเซสเซอร์เพื่อรับคำสั่งเปิด CEC และคำสั่งอื่นๆ
![การผสานรวม CEC ใน Android TV](https://source.android.google.cn/static/docs/devices/tv/images/TV_App_CEC_integration.png?authuser=0&hl=th)
- โดยบัส CEC จะได้รับคำสั่งจากแหล่งที่มาที่ใช้งานอยู่ในปัจจุบันให้เปลี่ยนไปใช้แหล่งที่มาอื่น
- โปรแกรมควบคุมจะส่งคำสั่งไปยัง HAL ของ HDMI-CEC
- HAL จะแจ้ง
ActiveSourceChangeListeners
ทั้งหมด - บริการควบคุม HDMI ได้รับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงแหล่งที่มาผ่าน
ActiveSourceChangeListener
- บริการตัวจัดการอินพุตทีวีจะสร้าง Intent เพื่อให้แอปทีวีเปลี่ยนแหล่งที่มา
- จากนั้นแอปทีวีจะสร้างเซสชันตัวจัดการอินพุตทีวีสำหรับอินพุตทีวีที่กำลังเปลี่ยนไปใช้ และเรียกใช้
setMain
ในเซสชันนั้น - เซสชันตัวจัดการอินพุตทีวีจะส่งต่อข้อมูลนี้ไปยังอินพุต HDMI ของทีวี
- อินพุต HDMI ของทีวีขอตั้งค่าพื้นผิวย่านความถี่ข้าง
- บริการโปรแกรมจัดการอินพุตทีวีจะสร้างคำสั่งควบคุมการกำหนดเส้นทางที่เกี่ยวข้องกลับไปยังบริการควบคุม HDMI เมื่อตั้งค่าพื้นผิวแล้ว
หลักเกณฑ์การผสานรวมทีวี
แอปออกอากาศ
เนื่องจากแต่ละประเทศมีข้อกำหนดเฉพาะสำหรับการออกอากาศ (MHEG, Teletext, HbbTV และอื่นๆ) ผู้ผลิตจึงควรจัดหาโซลูชันของตนเองสำหรับแอปการออกอากาศ เช่น
- MHEG: สแต็กแบบเนทีฟ
- เทเลเท็กซ์: สแต็กเนทีฟ
- HbbTV: โซลูชัน HbbTV จาก Vewd Software
ในรุ่น Android L นั้น Android TV คาดหวังให้ผู้ผลิตอุปกรณ์ใช้ผู้ผสานรวมระบบหรือโซลูชัน Android สำหรับสแต็กทีวีระดับภูมิภาค ส่งผ่านแพลตฟอร์มไปยังสแต็กซอฟต์แวร์ทีวี หรือส่งรหัสคีย์ที่จำเป็นเพื่อโต้ตอบกับสแต็กเดิม
ต่อไปนี้คือวิธีที่แอปออกอากาศและแอปทีวีทำงานร่วมกัน
- แอปทีวีอยู่ในโฟกัส โดยรับแป้นพิมพ์ทั้งหมด
- แอปทีวีจะส่งคีย์ (เช่น ปุ่มสีแดง) ไปยังอุปกรณ์อินพุตของทีวี
- อุปกรณ์อินพุตทีวีจะผสานรวมกับชุดทีวีเดิมเป็นการภายใน
- เมื่อได้รับรหัสคีย์การเปิดใช้งาน (เช่น ปุ่มสีแดง) อุปกรณ์อินพุตทีวีจะเปิดใช้งานแอปออกอากาศ
- แอปออกอากาศจะเป็นผู้รับโฟกัสในแอปทีวีและจัดการการดำเนินการของผู้ใช้
สําหรับการค้นหา/คําแนะนําด้วยเสียง แอปการออกอากาศอาจรองรับการค้นหาในแอปสําหรับการค้นหาด้วยเสียง