TV Input Framework

ไอคอน HAL ของ Android TV

Android TV Input Framework (TIF) ช่วยให้การนำส่งเนื้อหาสดไปยัง Android TV เป็นเรื่องง่าย TIF ของ Android มี API มาตรฐานสำหรับผู้ผลิตในการสร้าง โมดูลอินพุตเพื่อควบคุม Android TV รวมถึงช่วยให้ค้นหาและ รับคำแนะนำรายการทีวีสดได้ผ่านข้อมูลเมตาที่เผยแพร่โดยอินพุตทีวี

เฟรมเวิร์กไม่ได้มุ่งที่จะใช้มาตรฐานทีวีหรือข้อกำหนดระดับภูมิภาค แต่ช่วยให้ผู้ผลิตอุปกรณ์ปฏิบัติตามมาตรฐานการออกอากาศทีวีดิจิทัลระดับภูมิภาค ได้ง่ายขึ้นโดยไม่ต้องติดตั้งใช้งานใหม่ เอกสารในส่วนนี้อาจเป็นประโยชน์ต่อนักพัฒนาแอปบุคคลที่สามที่ต้องการสร้างอินพุตทีวีที่กำหนดเองด้วย

คอมโพเนนต์

การใช้งาน Android TV Input Framework มีตัวจัดการอินพุตทีวี TIF ทำงานร่วมกับแอปทีวี ซึ่งเป็นแอปของระบบที่แอปของบุคคลที่สามแทนที่ไม่ได้ เพื่อเข้าถึงช่องที่จูนเนอร์ในตัวและช่อง IP แอปทีวี สื่อสารกับโมดูลอินพุตทีวีที่ผู้ผลิตอุปกรณ์หรือบุคคลที่สาม จัดหาให้ผ่านตัวจัดการอินพุตทีวี

เฟรมเวิร์กอินพุตทีวีประกอบด้วย

  • ผู้ให้บริการทีวี (com.android.providers.tv.TvProvider): ฐานข้อมูล ของช่อง รายการ และสิทธิ์ที่เกี่ยวข้อง
  • แอปทีวี (com.android.tv.TvActivity): แอปที่จัดการการโต้ตอบของผู้ใช้
  • TV Input Manager (android.media.tv.TvInputManager): อนุญาตให้ อินพุตทีวีสื่อสารกับแอปทีวี
  • อินพุตทีวี: แอปที่แสดงถึงจูนเนอร์และพอร์ตอินพุตจริงหรือเสมือน
  • HAL อินพุตทีวี (tv_input โมดูล): คำจำกัดความของฮาร์ดแวร์ที่ อนุญาตให้อินพุตทีวีของระบบเข้าถึงฮาร์ดแวร์เฉพาะของทีวีเมื่อมีการติดตั้งใช้งาน
  • การควบคุมโดยผู้ปกครอง: เทคโนโลยีที่อนุญาตให้บล็อกช่องและ รายการ
  • HDMI-CEC: เทคโนโลยีที่อนุญาตให้ควบคุมอุปกรณ์ต่างๆ จากระยะไกลผ่าน HDMI
  • เฟรมเวิร์กตัวรับสัญญาณ: เฟรมเวิร์กสำหรับอินพุตทีวีที่มีตัวรับสัญญาณในตัว
  • MediaCas: เฟรมเวิร์กสำหรับการเข้าถึงแบบมีเงื่อนไข
  • Tuner Resource Manager: บริการสำหรับจัดการทรัพยากรฮาร์ดแวร์สำหรับอินพุตทีวี MediaCas และอินพุต Built-in-Tuner

เราจะอธิบายคอมโพเนนต์เหล่านี้อย่างละเอียดด้านล่าง ดูแผนภาพต่อไปนี้เพื่อดู มุมมองโดยละเอียดของสถาปัตยกรรมเฟรมเวิร์กอินพุตของ Android TV

ภาพรวมสถาปัตยกรรม TIF ของ Android
รูปที่ 1 สถาปัตยกรรมของ Android TV Input Framework (TIF)

Flow

วิธีการใช้สถาปัตยกรรมมีดังนี้

  1. ผู้ใช้จะเห็นและโต้ตอบกับแอปทีวี ซึ่งเป็นแอปของระบบที่แอปของบุคคลที่สามแทนที่ไม่ได้
  2. แอปทีวีจะแสดงเนื้อหา AV จากอินพุตทีวี
  3. แอปทีวีไม่สามารถสื่อสารกับอินพุตทีวีได้โดยตรง TV Input Manager จะระบุสถานะของอินพุตทีวีสำหรับแอปทีวี ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อจำกัดเหล่านี้ได้ที่TV Input Manager ด้านล่าง

สิทธิ์

  • มีเพียงsignatureOrSystem อินพุตทีวีและแอปทีวีเท่านั้นที่มีสิทธิ์เข้าถึงฐานข้อมูลผู้ให้บริการทีวีอย่างเต็มรูปแบบและรับ KeyEvent ได้
  • เฉพาะอินพุตทีวีของระบบเท่านั้นที่เข้าถึง HAL ของอินพุตทีวีได้ผ่านบริการตัวจัดการอินพุตทีวี ระบบจะเข้าถึงอินพุตทีวีแบบหนึ่งต่อหนึ่งผ่านเซสชัน TV Input Manager
  • อินพุตทีวีของบุคคลที่สามมีสิทธิ์เข้าถึงฐานข้อมูลผู้ให้บริการทีวี ที่ล็อกแพ็กเกจไว้ และสามารถอ่าน/เขียนได้เฉพาะแถวแพ็กเกจที่ตรงกันเท่านั้น
  • อินพุตทีวีของบุคคลที่สามจะแสดงเนื้อหาของตัวเองหรือเนื้อหาจาก อินพุตทีวีแบบส่งผ่านของผู้ผลิตอุปกรณ์ เช่น HDMI1 โดยจะแสดงเนื้อหาจากอินพุตทีวีที่ไม่ใช่แบบพาสทรูไม่ได้ เช่น จูนเนอร์ในตัวหรือ IPTV
  • TV_INPUT_HARDWARE สำหรับแอปอินพุตทีวีฮาร์ดแวร์ จะส่งสัญญาณไปยังบริการตัวจัดการอินพุตทีวีเพื่อแจ้งให้บริการอินพุตทีวีทราบเมื่อบูตเครื่อง เพื่อเรียกใช้บริการตัวจัดการอินพุตทีวีและเพิ่มอินพุตทีวีของตัวเอง สิทธิ์นี้ อนุญาตให้แอปอินพุตทีวีฮาร์ดแวร์รองรับอินพุตทีวีหลายรายการต่อบริการอินพุตทีวี รวมถึงเพิ่มและนำอินพุตทีวีที่รองรับออกได้แบบไดนามิก

ผู้ให้บริการทีวี

ฐานข้อมูลผู้ให้บริการทีวีจะจัดเก็บช่องและรายการจากอินพุตทีวี นอกจากนี้ ผู้ให้บริการทีวียังเผยแพร่และจัดการสิทธิ์ที่เกี่ยวข้องเพื่อให้อินพุตทีวีเห็นเฉพาะรายการของตนเอง เช่น อินพุตทีวีหนึ่งๆ จะดูได้เฉพาะช่องและรายการที่อินพุตนั้นๆ จัดหาให้ และจะถูกห้ามไม่ให้เข้าถึงช่องและรายการของอินพุตทีวีอื่นๆ

ผู้ให้บริการทีวีจะแมป "ประเภทการออกอากาศ" กับ "ประเภทมาตรฐาน" ภายใน TV Inputs มีหน้าที่ป้อนค่าใน "ประเภทการออกอากาศ" ด้วยค่าใน มาตรฐานการออกอากาศพื้นฐาน และระบบจะป้อนค่าในช่อง "ประเภทมาตรฐาน" โดยอัตโนมัติด้วยประเภทที่เกี่ยวข้องที่ถูกต้องจาก android.provider.TvContract.Genres เช่น เมื่อใช้การออกอากาศ มาตรฐาน ATSC A/65 และโปรแกรมที่มีประเภท 0x25 (หมายถึง "กีฬา") อินพุตทีวีจะป้อนข้อมูล "ประเภทการออกอากาศ" ด้วย สตริง "กีฬา" และผู้ให้บริการทีวีจะป้อนข้อมูลช่อง "ประเภทมาตรฐาน" ด้วย ค่าที่แมป android.provider.TvContract.Genres.SPORTS

ดูมุมมองแบบละเอียดของผู้ให้บริการทีวีได้ในแผนภาพด้านล่าง

ผู้ให้บริการ Android TV
รูปที่ 2 ผู้ให้บริการ Android TV

เฉพาะแอปในพาร์ติชันระบบที่มีสิทธิ์เท่านั้นที่อ่านฐานข้อมูล TV Provider ทั้งหมดได้

อินพุตทีวีแบบพาสทรูจะไม่จัดเก็บช่องและรายการ

นอกจากฟิลด์มาตรฐานสำหรับช่องและรายการแล้ว ฐานข้อมูลผู้ให้บริการทีวี ยังมีฟิลด์ประเภท BLOB COLUMN_INTERNAL_PROVIDER_DATA ในแต่ละตารางที่อินพุตทีวีอาจใช้เพื่อจัดเก็บข้อมูลที่กำหนดเอง ข้อมูล BLOB นั้น อาจมีข้อมูลที่กำหนดเอง เช่น ความถี่ของจูนเนอร์ที่เชื่อมโยง และ อาจมีให้ใน Protocol Buffer หรือรูปแบบอื่น ฟิลด์ที่ค้นหาได้ พร้อมใช้งานเพื่อทำให้บางช่องไม่พร้อมใช้งานในการค้นหา (เช่น เพื่อให้เป็นไปตาม ข้อกำหนดเฉพาะของประเทศสำหรับการปกป้องเนื้อหา)

ตัวอย่างฟิลด์ฐานข้อมูล

ผู้ให้บริการทีวีรองรับ Structured Data ในตาราง channel (android.provider.TvContract.Channels) และ program (android.provider.TvContract.Programs) ตารางเหล่านี้จะ ได้รับการป้อนข้อมูลและเข้าถึงโดยอินพุตทีวีและแอปของระบบ เช่น แอปทีวี ตารางเหล่านี้มีฟิลด์ 4 ประเภท ได้แก่

  • การแสดงผล: ฟิลด์การแสดงผลมีข้อมูลที่แอปอาจ ต้องการแสดงต่อผู้ใช้ เช่น ชื่อ (COLUMN_DISPLAY_NAME) หรือหมายเลข (COLUMN_DISPLAY_NUMBER) ของช่อง หรือชื่อของรายการที่กำลังรับชม
  • ข้อมูลเมตา: มี 3 ฟิลด์สำหรับระบุเนื้อหา ตามมาตรฐานที่เกี่ยวข้อง เช่น รหัสสตรีมการขนส่งของช่อง (COLUMN_TRANSPORT_STREAM_ID), รหัสเครือข่ายเดิม (COLUMN_ORIGINAL_NETWORK_ID) และรหัสบริการ (COLUMN_SERVICE_ID)
  • ข้อมูลภายใน: ฟิลด์ที่ใช้สำหรับอินพุตทีวี ที่กำหนดเอง
    ฟิลด์บางรายการ เช่น COLUMN_INTERNAL_PROVIDER_DATA สามารถปรับแต่งได้ ฟิลด์ BLOB ที่อินพุตทีวีสามารถจัดเก็บข้อมูลเมตาที่กำหนดเองเกี่ยวกับช่อง หรือโปรแกรม
  • Flag: ฟิลด์ Flag แสดงว่าควรจำกัดไม่ให้ช่องปรากฏในผลการค้นหา การเรียกดู หรือการดูหรือไม่ การตั้งค่านี้ทำได้ที่ระดับช่องเท่านั้น รายการทั้งหมดจะอิงตามการตั้งค่าในช่อง
    • COLUMN_SEARCHABLE: การจำกัดการค้นหาจากบางช่องอาจเป็นข้อกำหนดในบางภูมิภาค COLUMN_SEARCHABLE = 0 หมายความว่าไม่ควรแสดงช่องในผลการค้นหา
    • COLUMN_BROWSABLE: มองเห็นได้เฉพาะแอปพลิเคชันของระบบ จำกัดไม่ให้แอปพลิเคชันเรียกดูช่อง COLUMN_BROWSABLE = 0 หมายความว่าไม่ควรใส่ช่องนั้น ในรายการช่อง
    • COLUMN_LOCKED: มองเห็นได้เฉพาะแอปพลิเคชันของระบบ จำกัดไม่ให้บัญชีที่ไม่ถูกต้องดูช่องโดยไม่ต้องป้อนรหัส PIN COLUMN_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เข้าถึงฐานข้อมูลทั้งหมดได้

ตัวจัดการอินพุตทีวี

ตัวจัดการอินพุตทีวีมี API ของระบบส่วนกลางสำหรับเฟรมเวิร์กอินพุตของ Android TV โดยรวม โดยจะทำหน้าที่เป็นตัวกลางในการโต้ตอบระหว่างแอปและอินพุตทีวี รวมถึง มีฟังก์ชันการควบคุมโดยผู้ปกครอง เซสชันของ TV Input Manager ต้อง สร้างแบบหนึ่งต่อหนึ่งกับอินพุตทีวี ตัวจัดการอินพุตทีวีอนุญาตให้เข้าถึง อินพุตทีวีที่ติดตั้งไว้เพื่อให้แอปทำสิ่งต่อไปนี้ได้

  • แสดงรายการอินพุตทีวีและตรวจสอบสถานะ
  • สร้างเซสชันและจัดการผู้ฟัง

สำหรับเซสชัน แอปทีวีจะปรับอินพุตทีวีได้เฉพาะ URI ที่แอปเพิ่มลงในฐานข้อมูลผู้ให้บริการทีวีเท่านั้น ยกเว้นอินพุตทีวีแบบส่งผ่านซึ่งปรับได้โดยใช้ TvContract.buildChannelUriForPassthroughInput() นอกจากนี้ คุณยังตั้งค่าระดับเสียงของอินพุตทีวีได้ด้วย อินพุตทีวีที่ผู้ผลิตอุปกรณ์ (แอปที่มีลายเซ็น) หรือแอปอื่นๆ ที่ติดตั้งในพาร์ติชันระบบระบุและลงนาม จะมีสิทธิ์เข้าถึงฐานข้อมูลผู้ให้บริการทีวีทั้งหมด สิทธิ์เข้าถึงนี้สามารถ ใช้เพื่อสร้างแอปสำหรับเรียกดูและค้นหาในช่องทีวี และรายการทั้งหมดที่มีให้บริการ

แอปอาจสร้างและลงทะเบียน TvInputCallback ด้วย android.media.tv.TvInputManager เพื่อให้เรียกกลับเมื่อมีการเปลี่ยนแปลงสถานะของอินพุตทีวี หรือเมื่อมีการเพิ่มหรือนำอินพุตทีวีออก ตัวอย่างเช่น แอปทีวีสามารถตอบสนองเมื่ออินพุตทีวีถูกยกเลิกการเชื่อมต่อ โดยแสดงเป็นว่ายกเลิกการเชื่อมต่อแล้วและป้องกันไม่ให้เลือก

TV Input Manager จะสรุปการสื่อสารระหว่างแอปทีวีกับอินพุตทีวี อินเทอร์เฟซมาตรฐานของ TV Input Manager และ TV Input ช่วยให้ผู้ผลิตอุปกรณ์หลายรายสร้างแอปทีวีของตนเองได้ พร้อมทั้งช่วยให้ TV Input ของบุคคลที่สามทั้งหมดทำงานในแอปทีวีทั้งหมดได้

อินพุตของทีวี

อินพุตทีวีเป็นแอป Android ในแง่ที่มี AndroidManifest.xml และ ได้รับการติดตั้ง (ผ่าน Play, ติดตั้งไว้ล่วงหน้า หรือโหลดจากแหล่งที่ไม่รู้จัก) Android TV รองรับ แอปของระบบที่ติดตั้งไว้ล่วงหน้า แอปที่ผู้ผลิตอุปกรณ์ลงนาม และ อินพุตทีวีของบุคคลที่สาม

อินพุตบางอย่าง เช่น อินพุต HDMI หรืออินพุตจูนเนอร์ในตัว จะมีให้เฉพาะ ผู้ผลิตเท่านั้น เนื่องจากอินพุตเหล่านี้สื่อสารกับฮาร์ดแวร์พื้นฐานโดยตรง ส่วนบริการอื่นๆ เช่น IPTV, การเปลี่ยนตำแหน่ง และ STB ภายนอก จะมีให้บริการโดย บุคคลที่สามในรูปแบบ APK บน Google Play Store เมื่อดาวน์โหลดและติดตั้งแล้ว คุณจะเลือก อินพุตใหม่ได้ภายในแอปทีวี

ตัวอย่างอินพุตแบบส่งผ่าน

อินพุตของระบบ Android TV
รูปที่ 3 อินพุตของระบบ Android TV

ในตัวอย่างนี้ เราเชื่อถืออินพุตทีวีที่ผู้ผลิตอุปกรณ์ระบุ และมีสิทธิ์เข้าถึงผู้ให้บริการทีวีอย่างเต็มรูปแบบ ในฐานะอินพุตทีวีแบบส่งผ่าน Google TV จะไม่ ลงทะเบียนช่องหรือรายการใดๆ กับผู้ให้บริการทีวี หากต้องการรับ URI ที่ใช้ เพื่ออ้างอิงอินพุตการส่งผ่าน ให้ใช้วิธีการยูทิลิตี android.media.tv.TvContract buildChannelUriForPassthroughInput(String inputId) แอปทีวีจะสื่อสารกับตัวจัดการอินพุตทีวีเพื่อเข้าถึงอินพุตทีวี HDMI

ตัวอย่างจูนเนอร์ในตัว

อินพุตจูนเนอร์ในตัวของ Android TV
รูปที่ 4 อินพุตจูนเนอร์ในตัวของ Android TV

ในตัวอย่างนี้ อินพุตทีวีของจูนเนอร์ในตัวที่ผู้ผลิตอุปกรณ์ ระบุไว้ถือว่าเชื่อถือได้และมีสิทธิ์เข้าถึงผู้ให้บริการทีวีอย่างเต็มรูปแบบ

ตัวอย่างอินพุตของบุคคลที่สาม

อินพุตของบุคคลที่สามใน Android TV
รูปที่ 5 อินพุตของบุคคลที่สามใน Android TV

ในตัวอย่างนี้ อินพุตทีวี STB ภายนอกให้บริการโดยบุคคลที่สาม เนื่องจาก อินพุตทีวีนั้นเข้าถึงฟีดวิดีโอ HDMI ที่เข้ามาโดยตรงไม่ได้ จึงต้องผ่าน ตัวจัดการอินพุตทีวีและใช้อินพุตทีวี HDMI ที่ผู้ผลิตอุปกรณ์ จัดหาให้

ผ่าน TV Input Manager อินพุตทีวี STB ภายนอกสามารถสื่อสารกับอินพุตทีวี HDMI และขอให้อินพุตทีวีแสดงวิดีโอบน HDMI1 ได้ ดังนั้นอินพุตทีวีของ STB จึงควบคุม ทีวีได้ในขณะที่อินพุตทีวี HDMI ที่ผู้ผลิตให้มาจะแสดงวิดีโอ

ตัวอย่างการแสดงภาพซ้อนภาพ (PIP)

KeyEvent ของ Android TV
รูปที่ 6 KeyEvent ของ Android TV

แผนภาพด้านบนแสดงวิธีส่งปุ่มบนรีโมตคอนโทรลไปยัง อินพุตทีวีที่เฉพาะเจาะจงสำหรับการแสดงภาพซ้อนภาพ (PIP) การกดปุ่มเหล่านั้น จะได้รับการตีความโดยไดรเวอร์ฮาร์ดแวร์ที่ผู้ผลิตอุปกรณ์จัดหาให้ ซึ่งจะแปลงรหัสสแกนฮาร์ดแวร์เป็นรหัสคีย์ Android และส่งไปยัง ไปป์ไลน์อินพุตมาตรฐานของ Android ฟังก์ชัน InputReader และ InputDispatcher จะทำงานเป็น KeyEvent ซึ่งจะทริกเกอร์เหตุการณ์ในแอปทีวีหากแอปนั้นอยู่ในโฟกัส

เฉพาะอินพุตทีวีของระบบเท่านั้นที่มีสิทธิ์รับ InputEvents และ เฉพาะในกรณีที่มีสิทธิ์ของระบบ RECEIVE_INPUT_EVENT อินพุตทีวีมีหน้าที่กำหนดว่าจะใช้ InputEvents ใด และควร อนุญาตให้แอปทีวีจัดการคีย์ที่ไม่จำเป็นต้องใช้

แอปทีวีมีหน้าที่รับผิดชอบในการทราบว่าอินพุตทีวีของระบบใดที่ใช้งานอยู่ ซึ่งหมายถึงอินพุตที่ผู้ใช้เลือก และเพื่อแยกความแตกต่างของKeyEvents ที่เข้ามาและกำหนดเส้นทางไปยังเซสชันที่ถูกต้องของตัวจัดการอินพุตทีวี โดยเรียกใช้ dispatchInputEvent() เพื่อส่งต่อเหตุการณ์ไปยังอินพุตทีวีที่เชื่อมโยง

ตัวอย่างอินพุต MHEG-5

แผนภาพต่อไปนี้แสดงมุมมองโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีกำหนดเส้นทางของ KeyEvents ผ่าน TIF ของ Android

ตัวอย่างปุ่มสีแดงของ Android TV
รูปที่ 7 ตัวอย่างปุ่มสีแดงของ Android TV

ซึ่งแสดงถึงขั้นตอนของแอปปุ่มสีแดงที่พบได้ทั่วไปในยุโรปเพื่ออนุญาตให้ผู้ใช้ เข้าถึงแอปแบบอินเทอร์แอกทีฟบนโทรทัศน์ แอปสามารถส่งผ่านสตรีมการขนส่งนี้ได้ เมื่อคลิกปุ่มนี้ ผู้ใช้จะโต้ตอบกับแอปออกอากาศเหล่านี้ได้ ตัวอย่างเช่น คุณอาจใช้แอปออกอากาศเหล่านี้เพื่อเข้าถึงหน้าเว็บที่เกี่ยวข้องหรือผลการแข่งขันกีฬา

ดูส่วนแอปออกอากาศเพื่อดูวิธีที่แอปออกอากาศโต้ตอบกับแอป TV

ในตัวอย่างนี้

  1. แอปทีวีอยู่ในโฟกัสและรับคีย์ทั้งหมด
  2. KeyEvents (เช่น ปุ่มสีแดง) จะส่งไปยังอินพุตทีวีที่ใช้งานอยู่เป็น InputEvents.
  3. อินพุตทีวีของระบบผสานรวมกับสแต็ก MHEG-5 และมี RECEIVE_INPUT_EVENT สิทธิ์ของระบบ
  4. เมื่อได้รับรหัสเปิดใช้งาน (เช่น ปุ่มสีแดง) อินพุตทีวีจะเปิดใช้งานแอปออกอากาศ
  5. อินพุตทีวีใช้ KeyEvents เป็น InputEvents และแอปออกอากาศจะเป็นโฟกัสและจัดการ InputEvents จนกว่าจะปิด

หมายเหตุ: อินพุตทีวีของบุคคลที่สามจะไม่ได้รับคีย์

HAL อินพุตทีวี

TV Input HAL ช่วยในการพัฒนาอินพุตทีวีเพื่อเข้าถึงฮาร์ดแวร์เฉพาะของทีวี เช่นเดียวกับ HAL อื่นๆ ของ Android, TV Input HAL (tv_input) จะ อยู่ในโครงสร้างแหล่งที่มาของ AOSP และผู้ให้บริการจะพัฒนาการติดตั้งใช้งาน

หมายเหตุ: ตั้งแต่ Android 14 เป็นต้นไป อินเทอร์เฟซ HAL ของอินพุตทีวีจะกำหนดโดยใช้ AIDL

แอป TV

แอปทีวีของระบบจะแสดงเนื้อหารายการทีวีสดต่อผู้ใช้ เรามีแอปทีวีอ้างอิง (ทีวีสด) พร้อมกับแพลตฟอร์ม Android ซึ่ง ผู้ผลิตอุปกรณ์จะใช้แอปนี้ตามที่เป็นอยู่ ปรับแต่ง ขยาย หรือแทนที่ก็ได้ ซอร์สโค้ด พร้อมใช้งานในโครงการโอเพนซอร์ส Android และคุณเริ่มต้นใช้งานได้ ในบทความแอปทีวีอ้างอิง

ผู้ผลิตอุปกรณ์อาจขยายแอปทีวีเพื่อใช้ฟีเจอร์เฉพาะของผู้ผลิตอุปกรณ์หรือประเทศ แต่ฟีเจอร์นี้ไม่ได้อยู่ในขอบเขตของ TIF หรือแอปทีวีอ้างอิง

แอปทีวีของระบบต้องจัดการงานต่อไปนี้เป็นอย่างน้อย

การตั้งค่าและการกำหนดค่า

  • ตรวจหาอินพุตทีวีโดยอัตโนมัติ
  • อนุญาตให้อินพุตทีวีเริ่มการตั้งค่าช่อง
  • ควบคุมการตั้งค่าโดยผู้ปกครอง
  • แก้ไขช่อง

กำลังดู

  • เข้าถึงและไปยังส่วนต่างๆ ของช่องทีวีทั้งหมด
  • เข้าถึงแถบข้อมูลรายการทีวี
  • แสดงข้อมูลคู่มือการเขียนโปรแกรมอิเล็กทรอนิกส์ (EPG)
  • รองรับแทร็กเสียงและคำบรรยายหลายแทร็ก
  • ระบุ PIN การควบคุมโดยผู้ปกครอง
  • อนุญาตการวางซ้อน UI ของอินพุตทีวีสำหรับมาตรฐานทีวี (HbbTV ฯลฯ)
  • แสดงผลการค้นหาสำหรับช่องและรายการทีวี
  • แสดงการ์ดการลิงก์แอป
  • รองรับ API การเลื่อนเวลา
  • จัดการฟังก์ชัน DVR และรองรับ API การบันทึกรายการทีวี

ชุดฟีเจอร์นี้จะเพิ่มขึ้นตาม Android เวอร์ชันใหม่ๆ ซึ่งมีการขยาย API ของ TIF แพลตฟอร์ม CTS Verifier จะให้ ความครอบคลุมของการทดสอบความเข้ากันได้

การรองรับอินพุตทีวีของบุคคลที่สาม

Android TV มี API สำหรับนักพัฒนาแอปสำหรับอินพุตทีวีของบุคคลที่สาม ซึ่งช่วยให้ แอปที่ติดตั้งไว้สามารถส่งช่องซอฟต์แวร์ไปยังประสบการณ์การใช้งานทีวีสดได้ เพื่อให้มั่นใจว่าการใช้งานอุปกรณ์ Android จะเข้ากันได้ แอปทีวีของระบบจึงมีหน้าที่รับผิดชอบบางอย่างเกี่ยวกับการแสดงอินพุตและช่องทีวีของบุคคลที่สามต่อผู้ใช้ แอปทีวีสดอ้างอิงมีการติดตั้งใช้งานที่เข้ากันได้ หาก เปลี่ยนแอปทีวีของระบบ ผู้ผลิตอุปกรณ์ต้องตรวจสอบว่าแอปของตนเอง มีความเข้ากันได้ที่คล้ายกัน เพื่อให้เป็นไปตามความคาดหวังของนักพัฒนาแอปในอุปกรณ์ Android TV ทั้งหมด

แอปทีวีของระบบต้องแสดงอินพุตของบุคคลที่สามควบคู่ไปกับบริการทีวีสดเริ่มต้นของอุปกรณ์ API ของนักพัฒนาแอปรับประกันว่าผู้ใช้จะค้นหาช่องได้ (เมื่อติดตั้งแล้ว) ในประสบการณ์การใช้งานทีวีมาตรฐาน

เราอนุญาตให้แสดงความแตกต่างด้านภาพระหว่างช่องในตัวกับช่องของบุคคลที่สาม ตามที่กำหนดไว้ในส่วนแอปทีวีของ CDD ของ Android

ส่วนต่อไปนี้แสดงวิธีที่แอปพลิเคชันทีวีสดเป็นไปตามข้อกำหนด CDD

การตั้งค่าช่องใหม่

การเพิ่มอินพุต/ช่องของบุคคลที่สามใหม่จะเริ่มต้นด้วยการที่ผู้ใช้ค้นหา และติดตั้งอินพุตทีวีจาก ร้านค้าแอปพลิเคชัน เช่น Google Play

อินพุตทีวีของบุคคลที่สามบางรายการจะเพิ่มช่องลงในฐานข้อมูล TvProvider โดยอัตโนมัติ แต่ส่วนใหญ่จะมีกิจกรรมการตั้งค่าเพื่อให้ผู้ใช้ตั้งค่าแชแนล ระบุรายละเอียดการเข้าสู่ระบบ และดำเนินการอื่นๆ ได้ แอปทีวีของระบบ ต้องตรวจสอบว่าผู้ใช้สามารถเปิดใช้งานกิจกรรมการตั้งค่านี้ได้ ซึ่งเป็นเหตุผลที่ CDD กำหนดให้การป้อนข้อมูลของบุคคลที่สามเป็นการดำเนินการนำทางขั้นต่ำที่อยู่ห่างจากแอปทีวี หลัก

แอปทีวีสดอ้างอิงมีเมนูแหล่งที่มาของช่องสำหรับเข้าถึง อินพุต

ไปที่การตั้งค่า
รูปที่ 8 ไปที่การตั้งค่า

ไปที่แหล่งที่มาของช่องในการตั้งค่า
รูปที่ 9 ไปที่แหล่งที่มาของช่องในการตั้งค่า

เลือกแหล่งที่มาจากรายการ
รูปที่ 10 เลือกแหล่งที่มาจากรายการ

เพิ่มช่องจากแหล่งที่มา
รูปที่ 11 เพิ่มช่องจากแหล่งที่มา

นอกจากนี้ การ์ดการแจ้งเตือนจะแสดงที่ด้านบนของเมนูแอปทีวีหลังจากติดตั้ง TvInput ใหม่ เพื่อนำผู้ใช้ไปยังการตั้งค่าโดยตรง

การแจ้งเตือนที่แสดงว่ามีแหล่งที่มาของช่องใหม่
รูปที่ 12 การแจ้งเตือนที่แสดงว่ามีแหล่งที่มาของช่องใหม่

หากผู้ใช้ดำเนินการผ่านการแจ้งเตือน ก็จะเลือกตั้งค่าแหล่งข้อมูลได้ตามที่แสดงในรูปที่ 10

ดูกำหนด บริการอินพุตทีวี เพื่อดูสิ่งที่นักพัฒนาแอปคาดหวังในด้านนี้

ปรับแต่งรายการช่อง

ผู้ผลิตอุปกรณ์อาจมี UI เพื่อซ่อนบางช่องและ ช่วยให้ผู้ใช้จัดการ EPG ของตนเองได้ รายการทีวีสดมีฟีเจอร์นี้

เปิดรายการช่องในการตั้งค่า
รูปที่ 13 เปิดรายการช่องในการตั้งค่า

ปรับแต่งรายการช่อง
รูปที่ 14 ปรับแต่งรายการช่อง

EPG

นักพัฒนาแอปอินพุตของบุคคลที่สามต้องมั่นใจว่าผู้ใช้จะไปยังช่องของตนเองได้อย่างง่ายดาย ในระหว่างการใช้งานทั่วไปในอุปกรณ์ Android TV ที่รองรับทั้งหมด

ช่องจากอินพุตของบุคคลที่สามต้องแสดงเป็นส่วนหนึ่งของ EPG ของประสบการณ์การใช้งานทีวีสดมาตรฐานของอุปกรณ์ คุณใช้การแยกภาพหรือหมวดหมู่แยกต่างหากสำหรับ ช่องของบุคคลที่สามได้ (ดูส่วนแอปทีวีของ CDD ของ Android) สิ่งสำคัญคือผู้ใช้ต้องค้นหาช่องที่ติดตั้งได้

ผู้ผลิตต้องติดตั้งใช้งานแอปทีวีเพื่อให้มีผลการค้นหาสำหรับคำขอค้นหาแบบทั่วโลก เพื่อให้มั่นใจว่าผู้ใช้จะได้รับประสบการณ์การใช้งานที่ดีที่สุด ทีวีสดมี การติดตั้งใช้งาน (ดู ซึ่งให้ผลลัพธ์จากอินพุตของบุคคลที่สาม (ต้องใช้เพื่อความเข้ากันได้ของแพลตฟอร์ม) รวมถึงอินพุตในตัว

การเลื่อนเวลา

สำหรับอุปกรณ์ที่ใช้ Android 6.0 ขึ้นไป แอปทีวีต้องรองรับเฟรมเวิร์ก Android API การเลื่อนเวลา นอกจากนี้ ผู้ผลิตต้องใช้การควบคุมการเล่น ในแอปทีวี ซึ่งจะช่วยให้ผู้ใช้หยุดชั่วคราว เล่นต่อ กรอกลับ และกรอไปข้างหน้า ได้

สำหรับอินพุตทีวีที่รองรับการเลื่อนเวลา แอปทีวีต้องแสดงตัวควบคุมการเล่น

ตัวควบคุมการเล่น
รูปที่ 15 ตัวควบคุมการเล่น

DVR

สำหรับอุปกรณ์ที่ใช้ Android 7.0 ขึ้นไป แอปทีวีต้องรองรับ TV recording APIs ของเฟรมเวิร์ก Android เพื่อรองรับ แสดงรายการ และเล่นรายการที่บันทึกไว้

ซึ่งช่วยให้ผู้ผลิตอุปกรณ์เสียบระบบย่อย DVR เข้ากับ TIF และลดความพยายามในการผสานรวมที่ต้องใช้ในการเปิดใช้หรือผสานรวมฟังก์ชัน DVR ในอุปกรณ์ทีวีได้อย่างมาก นอกจากนี้ ยังช่วยให้บุคคลที่สามสามารถให้บริการ ระบบ DVR หลังการขายที่เสียบเข้ากับอุปกรณ์ Android TV ได้

นอกจากจะบันทึกเนื้อหาสดแล้ว แอปทีวียังจัดการ ความขัดแย้งของทรัพยากรด้วย เช่น หากอุปกรณ์มีจูนเนอร์ 2 ตัว ก็จะบันทึกรายการ 2 รายการพร้อมกันได้ หากผู้ใช้ขอให้บันทึก 3 รายการ แอปทีวีต้องจัดการ ความขัดแย้งและควรแสดงการแจ้งเตือนหรือขอให้ผู้ใช้ กำหนดเวลาลำดับความสำคัญสำหรับคำขอเหล่านี้

นอกจากนี้ แอปทีวียังสามารถใช้ตรรกะที่ซับซ้อนมากขึ้น เช่น การถามผู้ใช้ว่าต้องการบันทึกทุกตอนในอนาคตของซีรีส์หรือไม่ เมื่อผู้ใช้ขอให้บันทึกตอนใดตอนหนึ่ง

ดูแผนภาพต่อไปนี้เพื่อดูการติดตั้งใช้งาน DVR ที่เป็นไปได้ใน Android TV

การบันทึกวิดีโอดิจิทัลใน Android TV
รูปที่ 16 การบันทึกวิดีโอดิจิทัล ใน Android TV

  1. บริการอินพุตทีวีจะบอกแอปทีวีว่ามีจูนเนอร์กี่ตัวเพื่อให้ แอปทีวีจัดการความขัดแย้งของทรัพยากรที่อาจเกิดขึ้นได้
  2. แอปทีวีได้รับคำขอที่ผู้ใช้เริ่มต้นเพื่อบันทึกรายการทีวี
  3. แอปทีวีจะจัดเก็บกำหนดการบันทึกในฐานข้อมูลภายใน
  4. เมื่อถึงเวลาบันทึก แอปทีวีจะส่งคำขอให้เปลี่ยนไปที่ช่อง ที่เชื่อมโยงกับการบันทึก
  5. บริการอินพุตทีวีจะรับคำขอนี้ ตอบกลับว่ามีทรัพยากรที่เหมาะสมหรือไม่ และเปลี่ยนไปที่ช่อง
  6. จากนั้นแอปทีวีจะส่งคำขอให้เริ่มบันทึกไปยัง TV Input Manager
  7. บริการอินพุตทีวีจะได้รับคำขอนี้และเริ่มบันทึก
  8. บริการอินพุตทีวีจะจัดเก็บข้อมูลวิดีโอจริงไว้ในที่เก็บข้อมูลของตนเอง ซึ่งอาจเป็นที่เก็บข้อมูลภายนอกหรือที่เก็บข้อมูลบนระบบคลาวด์
  9. เมื่อถึงเวลาหยุดบันทึก แอปทีวีจะส่งคำขอหยุดบันทึก ไปยัง TV Input Manager
  10. เมื่อบริการอินพุตทีวีได้รับคำขอแล้ว ระบบจะหยุดการบันทึกและ เพิ่มข้อมูลเมตาที่เชื่อมโยงกับผู้ให้บริการทีวีเพื่อให้แอปทีวีแสดง รายการที่บันทึกไว้แก่ผู้ใช้เมื่อมีการขอ

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์การบันทึกในบริการอินพุตทีวีได้ที่บทความการบันทึก ทีวี

แหล่งข้อมูลที่มีประโยชน์

  • CDD ของ Android และ API สำหรับนักพัฒนาซอฟต์แวร์ที่บันทึกไว้คือข้อมูลอ้างอิงที่แน่นอน
  • CTS Verifier จะเรียกใช้ API เป็นส่วนหนึ่งของโปรแกรมการทดสอบความเข้ากันได้ การเรียกใช้การทดสอบนี้กับทีวีสดอาจเป็นวิธีที่มีประโยชน์ในการดู EPG การค้นหา การควบคุมโดยผู้ปกครอง และข้อกำหนดอื่นๆ ในบริบทของอินพุตจากบุคคลที่สาม
  • ดูกำหนดบริการ อินพุตทีวี เพื่อดูความคาดหวังของนักพัฒนาแอปในด้านนี้

การควบคุมโดยผู้ปกครอง

การควบคุมโดยผู้ปกครองช่วยให้ผู้ใช้บล็อกช่องและรายการที่ไม่ต้องการได้ แต่ ข้ามการบล็อกได้โดยการป้อนรหัส PIN

ความรับผิดชอบด้านฟังก์ชันการควบคุมโดยผู้ปกครองจะแชร์กันระหว่างแอปทีวี บริการตัวจัดการอินพุตทีวี ผู้ให้บริการทีวี และอินพุตทีวี

การควบคุมโดยผู้ปกครองเป็นข้อบังคับและครอบคลุมโดย CTS Verifier

หลายประเทศได้กำหนดระบบการจัดประเภทที่อินพุตทีวีใช้ได้ผ่าน TVContentRating API นอกจากนี้ อินพุตทีวียังลงทะเบียนระบบการจัดประเภทที่กำหนดเองได้ตามที่การทดสอบ CTS Verifier แสดงให้เห็น ซึ่งจะมีการจัดประเภท "ปลอม" สำหรับประเทศที่มีระบบการจัดประเภทมาตรฐาน เราขอแนะนำให้ผู้ผลิตอุปกรณ์ ผสานรวมการควบคุมโดยผู้ปกครองของ TV Input Framework เข้ากับกลไกอื่นๆ ที่อาจมี

ผู้ให้บริการโทรทัศน์

แถวช่องแต่ละแถวมีฟิลด์ 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 เมื่อได้รับแจ้งจากอินพุตทีวีว่าเนื้อหาปัจจุบันถูกบล็อก หรือเมื่อผู้ใช้พยายามดูช่องที่ถูกบล็อก

แอปทีวีไม่ได้จัดเก็บการตั้งค่าการควบคุมโดยผู้ปกครองโดยตรง เมื่อ ผู้ใช้เปลี่ยนการตั้งค่าการควบคุมโดยผู้ปกครอง TV Input Manager จะจัดเก็บ 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 ที่มีอยู่จะต้องได้รับการออกแบบใหม่เพื่อ ทำงานร่วมกับ Android TIF เราขอแนะนำให้แพลตฟอร์มฮาร์ดแวร์มี ไมโครโปรเซสเซอร์เพื่อรับคำสั่งเปิดเครื่อง CEC และคำสั่งอื่นๆ

การผสานรวม CEC ใน Android TV
รูปที่ 17 การผสานรวม CEC ใน Android TV

  1. บัส CEC จะรับคำสั่งจากแหล่งที่มาที่ใช้งานอยู่ปัจจุบันเพื่อเปลี่ยน ไปยังแหล่งที่มาอื่น
  2. ไดรเวอร์จะส่งคำสั่งไปยัง HAL ของ HDMI-CEC
  3. HAL จะแจ้งเตือน ActiveSourceChangeListeners ทั้งหมด
  4. ระบบจะแจ้งให้บริการควบคุม HDMI ทราบถึงการเปลี่ยนแปลงแหล่งที่มาผ่าน ActiveSourceChangeListener
  5. บริการ TV Input Manager จะสร้าง Intent ให้แอปทีวีเปลี่ยน แหล่งที่มา
  6. จากนั้นแอปทีวีจะสร้างเซสชัน TV Input Manager สำหรับอินพุตทีวีที่กำลังเปลี่ยนไปใช้ และเรียกใช้ setMain ในเซสชันนั้น
  7. เซสชันของตัวจัดการอินพุตทีวีจะส่งต่อข้อมูลนี้ไปยังอินพุตทีวี HDMI
  8. คำขออินพุตทีวี HDMI เพื่อตั้งค่าพื้นผิวแถบข้าง
  9. บริการตัวจัดการอินพุตทีวีจะสร้างคำสั่งควบคุมการกำหนดเส้นทางที่เกี่ยวข้อง กลับไปยังบริการควบคุม HDMI เมื่อตั้งค่าพื้นผิว

หลักเกณฑ์การผสานรวมทีวี

แอปออกอากาศ

เนื่องจากแต่ละประเทศมีข้อกำหนดเฉพาะสำหรับการออกอากาศ (MHEG, Teletext, HbbTV และอื่นๆ) ผู้ผลิตจึงควรจัดหาโซลูชันของตนเองสำหรับ แอปออกอากาศ เช่น

  • MHEG: สแต็กเนทีฟ
  • เทเลเท็กซ์: สแต็กเนทีฟ
  • HbbTV: โซลูชัน HbbTV จาก Vewd Software

ในรุ่น Android L นั้น Android TV คาดหวังให้ผู้ผลิตอุปกรณ์ใช้ ผู้ให้บริการติดตั้งระบบหรือโซลูชัน Android สำหรับสแต็กทีวีระดับภูมิภาค ส่ง พื้นผิวไปยังสแต็กซอฟต์แวร์ทีวี หรือส่งรหัสคีย์ที่จำเป็นเพื่อโต้ตอบกับ สแต็กเดิม

แอปออกอากาศและแอปทีวีทำงานร่วมกันดังนี้

  1. แอปทีวีจะอยู่ในโฟกัสและรับคีย์ทั้งหมด
  2. แอปทีวีจะส่งคีย์ (เช่น ปุ่มสีแดง) ไปยังอุปกรณ์อินพุตทีวี
  3. อุปกรณ์อินพุตของทีวีจะผสานรวมกับสแต็กทีวีเดิมภายใน
  4. เมื่อได้รับรหัสเปิดใช้งาน (เช่น ปุ่มสีแดง) อุปกรณ์อินพุตทีวี จะเปิดใช้งานแอปออกอากาศ
  5. แอปการออกอากาศจะได้รับโฟกัสในแอปทีวีและจัดการการกระทำของผู้ใช้

สำหรับการค้นหา/คำแนะนำด้วยเสียง แอปออกอากาศอาจรองรับการค้นหาในแอป สำหรับการค้นหาด้วยเสียง