Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

กรอบอินพุตทีวี

ไอคอน Android TV HAL

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

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

ส่วนประกอบ

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

TV Input Framework ประกอบด้วย:

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

ส่วนประกอบเหล่านี้มีรายละเอียดอยู่ด้านล่าง ดูแผนภาพต่อไปนี้สำหรับมุมมองโดยละเอียดของสถาปัตยกรรม Android TV Input Framework

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

ไหล

นี่คือวิธีการใช้สถาปัตยกรรม:

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

สิทธิ์

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

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

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

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

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

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

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

อินพุตทีวีผ่านช่องไม่เก็บช่องและโปรแกรม

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

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

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

  • จอแสดงผล: ช่องที่แสดงมีข้อมูลที่แอปอาจต้องการให้ผู้ใช้มองเห็นได้เช่นชื่อช่อง ( COLUMN_DISPLAY_NAME ) หรือหมายเลข ( COLUMN_DISPLAY_NUMBER ) หรือชื่อรายการที่กำลังดู
  • ข้อมูลเมตา: มีสามฟิลด์สำหรับระบุเนื้อหาตามมาตรฐานที่เกี่ยวข้องเช่น ID สตรีมการขนส่งของช่อง ( 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 : ปรากฏแก่แอปพลิเคชันระบบเท่านั้น การ จำกัด ช่องไม่ให้ดูโดยบัญชีที่ไม่ถูกต้องโดยไม่ต้องป้อนรหัส PIN COLUMN_LOCKED = 1 หมายถึงช่องควรได้รับการปกป้องโดยการควบคุมโดยผู้ปกครอง

สำหรับรายการฟิลด์ที่ละเอียดยิ่งขึ้นโปรดดูที่ android/frameworks/base/media/java/android/media/tv/TvContract.java

สิทธิ์และการควบคุมการเข้าถึง

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

  • แต่ละแถวมี PACKAGE_NAME ซึ่งเป็นแพ็กเกจ (แอป) ที่เป็นเจ้าของแถวนั้นตรวจสอบใน Query, Insert, Update ผ่าน TvProvider.java อินพุตทีวีอาจเข้าถึงเฉพาะข้อมูลที่เขียนและถูกปิดล้อมจากข้อมูลที่อินพุตทีวีอื่นให้มา
  • อ่านเขียนสิทธิ์ผ่าน AndroidManifest.xml (ต้องได้รับความยินยอมจากผู้ใช้) เพื่อกำหนดช่องที่มี
  • เฉพาะแอป signatureOrSystem เท่านั้นที่สามารถรับสิทธิ์ ACCESS_ALL_EPG_DATA เพื่อเข้าถึงฐานข้อมูลทั้งหมด

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

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

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

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

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

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

อินพุตทีวี

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

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

ตัวอย่างอินพุต Passthrough

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

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

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

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

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

ตัวอย่างการป้อนข้อมูลของบุคคลที่สาม

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

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

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

Picture in picture (PIP) ตัวอย่าง

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

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

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

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

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

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

ตัวอย่างปุ่ม Android TV Red
รูปที่ 7. ตัวอย่างปุ่ม Android TV Red

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

ดูส่วน แอปออกอากาศ เพื่อเรียนรู้ว่าแอปออกอากาศโต้ตอบกับแอปทีวีอย่างไร

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

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

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

อินพุตทีวี HAL

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

แอพ TV

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

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

อย่างน้อยที่สุดแอพ TV ระบบต้องจัดการงานต่อไปนี้:

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

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

กำลังดู

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

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

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

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

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

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

ส่วนต่อไปนี้แสดงให้เห็นว่าแอปพลิเคชัน Live TV มีคุณสมบัติตรงตามข้อกำหนด CDD อย่างไร

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

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

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

แอพ Live TV อ้างอิงมีเมนู Channel Sources สำหรับการเข้าถึงอินพุต

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

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

เลือกแหล่งที่มาของคุณจากรายการ
รูปที่ 10. เลือกแหล่งที่มาของคุณจากรายการ

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

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

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

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

ดู กำหนดบริการอินพุตทีวีของคุณ สำหรับความคาดหวังของนักพัฒนาในด้านนี้

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

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

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

ปรับแต่งรายการช่องของคุณ
รูปที่ 14. ปรับแต่งรายการช่องของคุณ

EPG

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

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

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

เวลาขยับ

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

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

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

เครื่องบันทึกภาพ

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

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

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

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

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

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานคุณสมบัติการบันทึกในบริการอินพุตทีวีของคุณโปรดดูบทความ การบันทึกทีวี นี้

ทรัพยากรที่มีประโยชน์

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

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

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

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

การควบคุมโดยผู้ปกครองเป็นสิ่งจำเป็นและอยู่ภายใต้การคุ้มครองของ CTS Verifier

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

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

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

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

ตัวจัดการอินพุตทีวีจะจัดเก็บ TvContentRating ถูกบล็อก TvContentRating และตอบสนองต่อ isRatingBlocked() เพื่อให้คำแนะนำว่าควรบล็อกเนื้อหาที่มีการให้คะแนนหรือไม่

อินพุตทีวี

อินพุตทีวีจะตรวจสอบว่าเนื้อหาปัจจุบันควรถูกบล็อกหรือไม่โดยการเรียก isRatingBlocked() บนตัวจัดการอินพุตทีวีเมื่อการจัดประเภทของเนื้อหาที่แสดงมีการเปลี่ยนแปลง (ในรายการหรือเปลี่ยนช่อง) หรือการตั้งค่าการควบคุมโดยผู้ปกครองมีการเปลี่ยนแปลง (ใน ACTION_BLOCKED_RATINGS_CHANGED และ ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) . หากเนื้อหาควรถูกบล็อกอินพุตทีวีจะปิดใช้งานเสียงและวิดีโอและแจ้งให้แอปทีวีทราบว่าเนื้อหาปัจจุบันถูกบล็อกโดยการโทร notifyContentBlocked(TvContentRating) หากไม่ควรปิดกั้นเนื้อหาอินพุตทีวีจะเปิดใช้งานเสียงและวิดีโอและแจ้งให้แอปทีวีทราบว่าอนุญาตให้ใช้เนื้อหาปัจจุบันได้โดยโทร notifyContentAllowed()

แอพ TV

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

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

แอพ TV ไม่ได้จัดเก็บการตั้งค่าการควบคุมโดยผู้ปกครองโดยตรง เมื่อผู้ใช้เปลี่ยนการตั้งค่าการควบคุมโดยผู้ปกครอง TvContentRating ถูกบล็อกทุก TvContentRating จะถูกจัดเก็บโดยตัวจัดการอินพุตทีวีและช่องที่ถูกบล็อกจะถูกจัดเก็บโดยผู้ให้บริการทีวี

แอพ TV จำเป็นต้องประกาศการอนุญาต android.permission.MODIFY_PARENTAL_CONTROLS เพื่อเปลี่ยนการตั้งค่าการควบคุมโดยผู้ปกครอง

ขอแนะนำให้ผู้ผลิตอุปกรณ์:

  • ใช้การทดสอบการควบคุมโดยผู้ปกครอง CTS Verifier กับแอปพลิเคชัน Live TV อ้างอิงเพื่อสาธิตข้อกำหนดความเข้ากันได้
  • ใช้แอป TV Live เป็นข้อมูลอ้างอิงสำหรับโทรทัศน์ของพวกเขา App ตัวเอง: โดยเฉพาะดู ContentRatingsManager และ RatingSystemsFragment แหล่งที่มาและวิธีการที่พวกเขาจัดการการให้คะแนนที่กำหนดเอง

HDMI-CEC

HDMI-CEC ช่วยให้อุปกรณ์หนึ่งสามารถควบคุมอีกเครื่องหนึ่งได้ดังนั้นการเปิดใช้งานรีโมทเครื่องเดียวเพื่อควบคุมอุปกรณ์หลายเครื่องในโฮมเธียเตอร์ Android TV ใช้เพื่อเพิ่มความเร็วในการตั้งค่าและอนุญาตให้ควบคุมอินพุตทีวีต่างๆจากระยะไกลผ่านแอพ TV ส่วนกลาง ตัวอย่างเช่นอาจสลับอินพุตเปิดหรือปิดอุปกรณ์และอื่น ๆ

Android TIF ใช้ HDMI-CEC เป็นบริการควบคุม HDMI เพื่อให้ผู้ผลิตอุปกรณ์จำเป็นต้องพัฒนาไดรเวอร์ระดับต่ำที่โต้ตอบกับ Android TV HAL ที่มีน้ำหนักเบาโดยข้ามตรรกะทางธุรกิจที่ซับซ้อนมากขึ้น ในการนำเสนอการใช้งานมาตรฐาน Android พยายามลดปัญหาความเข้ากันได้โดยการลดการใช้งานแบบแยกส่วนและการสนับสนุนคุณลักษณะเฉพาะ บริการควบคุม HDMI ใช้บริการ Android ที่มีอยู่ซึ่งรวมถึงอินพุตและพลังงาน

ซึ่งหมายความว่าการใช้งาน HDMI-CEC ที่มีอยู่จะต้องได้รับการออกแบบใหม่เพื่อให้ทำงานร่วมกับ Android TIF ได้ เราขอแนะนำให้แพลตฟอร์มฮาร์ดแวร์มีไมโครโปรเซสเซอร์เพื่อเปิดใช้งาน CEC และคำสั่งอื่น ๆ

การรวม CEC บน Android TV
รูปที่ 17. การรวม CEC บน Android TV

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

แนวทางการรวมทีวี

แอปออกอากาศ

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

  • MHEG: สแต็กดั้งเดิม
  • เทเลเท็กซ์: สแต็กดั้งเดิม
  • HbbTV: โซลูชัน HbbTV จาก Vewd Software

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

นี่คือวิธีการโต้ตอบของแอพออกอากาศและแอพทีวี:

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

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