สร้างและเรียกใช้แอป TV

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

สำคัญ: แอปของคุณต้องเป็นไปตามข้อกำหนดเฉพาะเพื่อ มีคุณสมบัติในการเป็นแอป Android TV บน Google Play ดูข้อมูลเพิ่มเติมได้จากข้อกำหนดที่ระบุไว้ ในคุณภาพสำหรับแอป TV

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

สำหรับข้อมูลเกี่ยวกับการออกแบบแอปสำหรับทีวี โปรดดูการออกแบบสำหรับ TV โปรดดูแอปตัวอย่างใน ที่เก็บ GitHub สำหรับ Android TV

ระบุการรองรับรูปแบบสื่อ

ดูข้อมูลเกี่ยวกับตัวแปลงรหัส โปรโตคอล และรูปแบบในเอกสารประกอบต่อไปนี้ รองรับ Android TV

ตั้งค่าโปรเจ็กต์ทีวี

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

มีองค์ประกอบหลัก 2 อย่างที่คุณใช้เมื่อสร้างแอปที่เรียกใช้บนอุปกรณ์ทีวี ได้แก่

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

สิ่งที่ต้องมีก่อน

ก่อนที่จะเริ่มสร้างแอปสำหรับทีวี คุณต้องทำตามขั้นตอนต่อไปนี้

  • อัปเดตเครื่องมือ SDK ให้เป็นเวอร์ชัน 24.0.0 ขึ้นไป
    เครื่องมือ SDK ที่อัปเดตใหม่ช่วยให้คุณสร้างและทดสอบแอปสำหรับทีวีได้
  • อัปเดต SDK เป็น Android 5.0 (API 21) ขึ้นไป
    แพลตฟอร์มเวอร์ชันที่อัปเดตจะมี API ใหม่สำหรับแอปทีวี
  • สร้างหรืออัปเดตโปรเจ็กต์แอป
    หากต้องการเข้าถึง API ใหม่สำหรับอุปกรณ์ทีวี ให้สร้างโปรเจ็กต์หรือแก้ไข เป้าหมายที่เป็น Android 5.0 (API ระดับ 21) ขึ้นไป

ประกาศกิจกรรมทางทีวี

แอปพลิเคชันที่ตั้งใจทำงานบนอุปกรณ์ทีวีต้องประกาศกิจกรรม Launcher ของทีวี ในไฟล์ Manifest ใช้ Intent CATEGORY_LEANBACK_LAUNCHER เพื่อทำเช่นนี้ได้ ตัวกรองนี้จะระบุว่าแอปของคุณเปิดใช้อยู่สำหรับทีวีและ Google Play ระบุว่าแอปนั้นเป็นแอปทีวี เมื่อผู้ใช้เลือกแอปของคุณในหน้าจอหลักของทีวี ความตั้งใจนี้จะระบุกิจกรรมที่จะเปิด

ข้อมูลโค้ดต่อไปนี้แสดงวิธีรวมตัวกรอง Intent นี้ในไฟล์ Manifest

<application
  android:banner="@drawable/banner" >
  ...
  <activity
    android:name="com.example.android.MainActivity"
    android:label="@string/app_name" >

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

  <activity
    android:name="com.example.android.TvActivity"
    android:label="@string/app_name"
    android:theme="@style/Theme.Leanback">

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>

  </activity>
</application>

รายการไฟล์ Manifest ของกิจกรรมรายการที่สองในตัวอย่างนี้ระบุว่านี่เป็นกิจกรรมที่จะ เปิดบนอุปกรณ์ทีวี

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

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

ประกาศการรองรับอุปกรณ์ทีวี

ประกาศว่าแอปของคุณสร้างขึ้นเพื่อ Android TV ด้วยการประกาศ android.software.leanback

หากแอปทำงานทั้งในอุปกรณ์เคลื่อนที่และทีวี ให้ตั้งค่าแอตทริบิวต์ required เป็น false หากคุณตั้งค่าแอตทริบิวต์ required เป็น true Google Play จะทำให้แอปของคุณพร้อมใช้งานในระบบปฏิบัติการ Android TV เท่านั้น

<manifest>
    <uses-feature android:name="android.software.leanback"
        android:required="false" />
    ...
</manifest>

ไม่ต้องประกาศหน้าจอสัมผัส

แอปพลิเคชันที่มีเป้าหมายให้ทำงานบนอุปกรณ์ทีวีจะไม่ใช้หน้าจอสัมผัสเป็นอินพุต เพื่อความชัดเจน ไฟล์ Manifest ของแอปทีวีต้องประกาศว่า ไม่จำเป็นต้องใช้ฟีเจอร์ android.hardware.touchscreen การตั้งค่านี้ระบุว่าแอปของคุณ ทำงานบนอุปกรณ์ทีวีได้ และแอปของคุณต้องได้รับการพิจารณาว่าเป็นแอปทีวีใน Google เล่น ตัวอย่างโค้ดต่อไปนี้แสดงวิธีรวมการประกาศไฟล์ Manifest นี้

<manifest>
    <uses-feature android:name="android.hardware.touchscreen"
              android:required="false" />
    ...
</manifest>

ข้อควรระวัง: คุณต้องประกาศว่าไม่ต้องใช้หน้าจอสัมผัส ดังที่แสดงในโค้ดตัวอย่างนี้ มิเช่นนั้น แอปของคุณจะไม่ปรากฏใน Google Play บนทีวี อุปกรณ์

จัดเตรียมไอคอนและแบนเนอร์หน้าจอหลัก

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

หากต้องการเพิ่มรายการเหล่านี้ลงในแอป ให้อธิบายไอคอนและแบนเนอร์ในไฟล์ Manifest ดังนี้

<application
    ...
    android:icon="@mipmap/ic_launcher"
    android:banner="@drawable/banner" >
    ...
</application>

ไอคอนหน้าจอหลัก

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

ใช้android:banner ที่มีแอตทริบิวต์ <application> เพื่อระบุแบนเนอร์เริ่มต้นสำหรับกิจกรรมของแอปพลิเคชันทั้งหมด หรือ <activity> เพื่อส่งแบนเนอร์ สำหรับกิจกรรมที่เจาะจง

สำหรับแบนเนอร์ ให้ใช้ทรัพยากร xhdpi ขนาด 320 x 180 พิกเซล ต้องมีข้อความในฟิลด์ รูปภาพ หากแอปของคุณให้บริการมากกว่า 1 ภาษา คุณต้องระบุเวอร์ชันแยกต่างหากของ พร้อมข้อความสำหรับแต่ละภาษาที่รองรับ

เปลี่ยนสี Launcher

ข้อควรระวัง: ใน Android 12 ขึ้นไป ภาพเคลื่อนไหวในหน้าจอแนะนำที่กำหนดเองซึ่งสร้างขึ้นโดยใช้ แอป Android TV ไม่รองรับ API แพลตฟอร์ม SplashScreen

เมื่อแอปทีวีเปิดขึ้น ระบบจะแสดงภาพเคลื่อนไหวที่คล้ายกับส่วนขยายที่มีการเติมโฆษณา แวดวง หากต้องการปรับแต่งสีของภาพเคลื่อนไหวนี้ ให้ตั้งค่าไอคอน android:colorPrimary ให้เป็นสีที่เจาะจงของแอปหรือกิจกรรมทีวี แล้วก็ตั้งค่า 2 การเปลี่ยนซ้อนทับแอตทริบิวต์เป็น true ดังที่แสดงในตัวอย่างต่อไปนี้จาก ไฟล์ XML ของทรัพยากรธีม:

<resources>
    <style ... >
      <item name="android:colorPrimary">@color/primary</item>
      <item name="android:windowAllowReturnTransitionOverlap">true</item>
      <item name="android:windowAllowEnterTransitionOverlap">true</item>
    </style>
</resources>

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

สร้างแอปสำหรับระบบปฏิบัติการ Android TV

Jetpack มีไลบรารีแพ็กเกจ androidx สำหรับใช้กับแอปทีวี

Compose สำหรับรายการทีวี

การเขียนคือวิธีที่แนะนำสำหรับการสร้างแอปสำหรับระบบปฏิบัติการ Android TV ข้าง Compose เป็นหลัก ไลบรารี Compose สำหรับทีวีมีคอมโพเนนต์เฉพาะที่ออกแบบมาเพื่อ หน้าจอขนาดใหญ่:

ดูวิธีสร้างแอป TV โดยใช้ Compose สำหรับทีวีในใช้ Jetpack Compose บน Android TV

ชุดเครื่องมือ Leanback UI

ชุดเครื่องมือ Leanback UI มี API และวิดเจ็ตอินเทอร์เฟซผู้ใช้สำหรับอุปกรณ์ทีวี ดังนี้

ค้นพบวิธีสร้างแอปทีวีโดยใช้ชุดเครื่องมือ Leanback UI ใน สร้างแอปเล่นบนทีวี

เรียกใช้แอปทีวี

การเรียกใช้แอปเป็นส่วนสำคัญของกระบวนการพัฒนา คุณเรียกใช้แอปได้ใน อุปกรณ์ทีวีที่กำหนดค่าไว้ให้รองรับการแก้ไขข้อบกพร่อง USB หรือใช้อุปกรณ์ทีวีเสมือน

ทำงานบนอุปกรณ์จริง

ตั้งค่าอุปกรณ์ทีวีโดยทำดังนี้

  1. ใช้สาย USB เพื่อเชื่อมต่ออุปกรณ์ทีวีของคุณกับเครื่องพัฒนาซอฟต์แวร์ หากจำเป็น โปรดดูเอกสารประกอบจากผู้ผลิตอุปกรณ์
  2. ในอุปกรณ์ทีวี ให้ไปที่การตั้งค่า
  3. ในแถวอุปกรณ์ ให้เลือกเกี่ยวกับ
  4. เลื่อนไปที่ Build แล้วเลือก Build หลายๆ ครั้งจนกว่าจะได้รับข้อความ "ตอนนี้คุณเป็นนักพัฒนาซอฟต์แวร์แล้ว"
  5. กลับไปที่การตั้งค่า ในแถวค่ากำหนด ให้เลือกตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์
  6. เลือกการแก้ไขข้อบกพร่อง > การแก้ไขข้อบกพร่อง USB และเลือกเปิด
  7. กลับไปที่หน้าจอหลักของทีวี

วิธีทดสอบแอปพลิเคชันบนอุปกรณ์ทีวี

  1. ใน Android Studio ให้เลือกโปรเจ็กต์ แล้วคลิก เรียกใช้ จากแถบเครื่องมือ
  2. ในหน้าต่างเลือกเป้าหมายการทำให้ใช้งานได้ เลือกอุปกรณ์ทีวีของคุณแล้วคลิกตกลง

เรียกใช้บนอุปกรณ์เสมือน

AVD Manager ใน Android SDK ให้คำจำกัดความอุปกรณ์ที่ให้คุณสร้างอุปกรณ์ทีวีเสมือนสำหรับการวิ่งและ การทดสอบแอปพลิเคชันของคุณ

วิธีสร้างอุปกรณ์ทีวีเสมือน

  1. เริ่มต้น AVD Manager สำหรับข้อมูลเพิ่มเติม โปรดดู สร้างและจัดการอุปกรณ์เสมือน
  2. ในกล่องโต้ตอบ AVD Manager ให้คลิกแท็บการกำหนดอุปกรณ์
  3. เลือกคำจำกัดความอุปกรณ์ Android TV 1 รายการ แล้วคลิกสร้าง AVD
  4. เลือกตัวเลือกโปรแกรมจำลองแล้วคลิกตกลงเพื่อสร้าง AVD

    หมายเหตุ: เพื่อประสิทธิภาพที่ดีที่สุดของอุปกรณ์โปรแกรมจำลองทีวี ให้ใช้โปรแกรมจำลอง x86 และเปิดใช้ตัวเลือก ใช้ GPU ของโฮสต์ ใช้การเร่งอุปกรณ์เสมือนด้วย พร้อมใช้งาน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเร่งความเร็วของฮาร์ดแวร์ของโปรแกรมจำลอง โปรดดู กำหนดค่าการเร่งฮาร์ดแวร์สำหรับ โปรแกรมจำลอง Android

วิธีทดสอบแอปพลิเคชันบนอุปกรณ์ทีวีเสมือน

  1. ใน Android Studio ให้เลือกโปรเจ็กต์ แล้วคลิก เรียกใช้ จากแถบเครื่องมือ
  2. ในหน้าต่างเลือกเป้าหมายการทำให้ใช้งานได้ เลือกอุปกรณ์ทีวีเสมือนของคุณ แล้วคลิกตกลง

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

เปิดให้แอป TV ทำงานในรูปแบบประสบการณ์แบบใช้งานได้ทันที

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

ในการตั้งค่าแอป TV ให้ทำงานเป็น Instant App ในอุปกรณ์ Android TV หรือโปรแกรมจำลอง ให้ทำดังนี้ ขั้นแรก ให้ทำตามวิธีการเพื่อ สร้าง App Bundle ที่เปิดใช้ Instant

ถัดไปใน intent-filter สำหรับแอปทีวี MainActivity โปรดตรวจสอบว่าทั้ง LAUNCHER และ มีการประกาศ LEANBACK_LAUNCHER ใน AndroidManifest.xml:

<activity
    android:name="com.example.android.MainActivity"
    android:label="@string/app_name" >

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
  </activity>

ตอนนี้แอป TV ของคุณได้รับการกำหนดค่าให้ทำงานเป็นประสบการณ์แบบใช้งานได้ทันที

เตรียมแอป TV สำหรับการเผยแพร่

ดูขั้นตอนถัดไปในรายการตรวจสอบแอป TV เพื่อเตรียมแอป TV สำหรับการเผยแพร่และการเผยแพร่