จัดการตัวควบคุมทีวี

อุปกรณ์ทีวีจำเป็นต้องมีอุปกรณ์ฮาร์ดแวร์สำรองสำหรับการโต้ตอบกับแอป ซึ่งเป็น รีโมตคอนโทรลหรือเกมคอนโทรลเลอร์ ดังนั้น แอปของคุณต้องรองรับการป้อนข้อมูลด้วยแป้นบังคับทิศทาง (D-pad) นอกจากนี้ แอปของคุณอาจต้องจัดการตัวควบคุมที่ออฟไลน์และป้อนข้อมูลจากตัวควบคุมมากกว่า 1 รายการ ประเภทคอนโทรลเลอร์

คู่มือนี้จะกล่าวถึงข้อกำหนดในการจัดการตัวควบคุมสำหรับอุปกรณ์ทีวี

การควบคุมขั้นต่ำของ D-pad

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

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

การยกเลิกการเชื่อมต่อตัวควบคุมของแฮนเดิล

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

  • ขณะที่วิดีโอที่เล่นหลายนาที D-pad หรือเกม ตัวควบคุมอาจเข้าสู่โหมดสลีป ยกเลิกการเชื่อมต่อจากอุปกรณ์ทีวี และเชื่อมต่ออีกครั้งในภายหลัง
  • ในระหว่างการเล่นเกม ผู้เล่นใหม่อาจเข้าร่วมเกมโดยใช้อุปกรณ์ควบคุมเกม ยังไม่ได้เชื่อมต่อ
  • ในระหว่างการเล่นเกม ผู้เล่นอาจออกจากเกมและยกเลิกการเชื่อมต่อเกมคอนโทรลเลอร์

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

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  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>

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

จัดการรูปแบบการป้อนข้อมูลของ D-pad

ผู้ใช้อุปกรณ์ทีวีอาจมีตัวควบคุมมากกว่า 1 ประเภทที่ใช้กับทีวี สำหรับ เช่น ผู้ใช้อาจมีทั้งตัวควบคุม D-pad พื้นฐานและตัวควบคุมเกม โค้ดคีย์ ที่ได้รับจากเกมคอนโทรลเลอร์เมื่อใช้สำหรับฟังก์ชัน D-pad อาจแตกต่างจากคีย์ ที่ส่งโดย D-pad พื้นฐาน

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

เหตุการณ์ของปุ่มจัดการ

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

เหตุการณ์เกี่ยวกับ UI ทีวี

กำหนดลักษณะการทำงานของ UI ทีวีให้กับปุ่มที่สร้าง KeyEvent ตามที่แสดงในตารางต่อไปนี้

KeyEventลักษณะการทำงาน
KEYCODE_BUTTON_B, KEYCODE_BACKกลับ
KEYCODE_BUTTON_SELECT KEYCODE_BUTTON_A KEYCODE_ENTER KEYCODE_DPAD_CENTER KEYCODE_NUMPAD_ENTERการเลือก
KEYCODE_DPAD_UP KEYCODE_DPAD_DOWN KEYCODE_DPAD_LEFT KEYCODE_DPAD_RIGHTการไปยังรายการต่างๆ

กิจกรรมสื่อ

เมื่อผู้ใช้กำลังดูสื่อ ให้กำหนดลักษณะการทำงานให้กับปุ่มที่สร้าง KeyEvent ประเภทตามที่แสดงในตารางต่อไปนี้ หากแอปกำลังควบคุม MediaSession ใช้ MediaControllerAdapter เพื่อโทรหาหนึ่งในMediaControllerCompat.TransportControls ที่แสดงในตาราง โปรดทราบว่าปุ่มเลือกจะทำงานเป็น "เล่น" หรือ "หยุดชั่วคราว" ปุ่มในบริบทนี้

KeyEventการเรียกใช้ TransportControlsลักษณะการทำงาน
BUTTON_SELECT BUTTON_A ENTER DPAD_CENTER KEYCODE_NUMPAD_ENTER play()เล่น
BUTTON_START BUTTON_SELECT BUTTON_A ENTER DPAD_CENTER KEYCODE_NUMPAD_ENTER pause()หยุดชั่วคราว
BUTTON_R1skipToNext()ข้ามไปรายการถัดไป
BUTTON_L1skipToPrevious()ข้ามไปรายการก่อนหน้า
DPAD_RIGHT BUTTON_R2 AXIS_RTRIGGER AXIS_THROTTLEfastForward()กรอไปข้างหน้า
DPAD_LEFT BUTTON_L2 AXIS_LTRIGGER AXIS_BRAKErewind()กรอกลับ
ไม่มีstop()หยุด

หมายเหตุ: เมื่อคุณใช้ MediaSession ห้ามลบล้างการจัดการ ปุ่มเฉพาะสื่อ เช่น KEYCODE_MEDIA_PLAY หรือ KEYCODE_MEDIA_PAUSE ระบบจะทริกเกอร์ MediaSession.Callback

แสดงลักษณะการทำงานที่เหมาะสมของปุ่มย้อนกลับ

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

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

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

จัดการตัวควบคุมสำหรับเกม

รองรับการควบคุม D-pad

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

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

  • แจ้งข้อกำหนดของผู้ควบคุมข้อมูลล่วงหน้า: ใช้คำอธิบาย Google Play เพื่อสื่อสารความคาดหวังเกี่ยวกับตัวควบคุมให้ผู้เล่นทราบ หากเกมเหมาะกับ เกมแพดที่มีจอยสติ๊กมากกว่าจอยที่มี D-pad ทำให้ชัดเจน ผู้เล่นที่ใช้ ตัวควบคุมที่ไม่เหมาะสําหรับเกมอาจให้ประสบการณ์ที่ไม่ดีและ เกมได้รับคะแนนไม่ดี
  • ใช้การแมปปุ่มที่สอดคล้องกัน: การแมปปุ่มที่ใช้งานง่ายเป็นกุญแจสำคัญ เป็นประสบการณ์ที่ดีของผู้ใช้ ตัวอย่างเช่น ปฏิบัติตามศุลกากรที่ยอมรับโดยใช้ปุ่ม A เพื่อยอมรับและปุ่ม B เพื่อยกเลิก นอกจากนี้ คุณยังให้ความยืดหยุ่นที่ ในรูปแบบของความสามารถในการใช้งานซ้ำ ดูข้อมูลเพิ่มเติมเกี่ยวกับการแมปปุ่มได้ที่แฮนเดิล การดำเนินการกับตัวควบคุม
  • ตรวจหาความสามารถของตัวควบคุมและปรับให้สอดคล้องกัน: ค้นหาตัวควบคุม เกี่ยวกับความสามารถในการเพิ่มประสิทธิภาพ การแข่งขันระหว่างคอนโทรลเลอร์และเกม ตัวอย่างเช่น คุณอาจตั้งใจให้ผู้เล่นควบคุมทิศทางของวัตถุโดยโบกตัวควบคุมขึ้นในอากาศ แต่ถ้า ตัวควบคุมของโปรแกรมเล่นไม่มีตัวตรวจวัดความเร่งและฮาร์ดแวร์เครื่องวัดการหมุน การโบกมือจะไม่ทำงาน ค้นหาตัวควบคุมและหากการตรวจจับการเคลื่อนไหวไม่ใช่ ที่รองรับ ให้เปลี่ยนไปใช้รูปแบบการควบคุมอื่นที่ใช้ได้ หากต้องการดูข้อมูลเพิ่มเติม เกี่ยวกับการค้นหาความสามารถของตัวควบคุม โปรดดูที่การสนับสนุน ใน Android เวอร์ชันต่างๆ

ใช้ปุ่มที่เหมาะสม

ตัวควบคุมเกมบางรุ่นไม่มีปุ่ม "เริ่ม" "ค้นหา" หรือ "เมนู" ตรวจสอบว่า UI ไม่ได้ขึ้นอยู่กับ เกี่ยวกับการใช้ปุ่มเหล่านี้

จัดการตัวควบคุมหลายรายการ

เมื่อผู้เล่นหลายคนเล่นเกมกัน โดยแต่ละคนมีตัวควบคุมเป็นของตนเอง สิ่งสำคัญก็คือ จับคู่โปรแกรมเล่น-คอนโทรลเลอร์แต่ละคู่ สำหรับข้อมูลเกี่ยวกับวิธีใช้หมายเลขตัวควบคุม การระบุตัวตน โปรดดู getControllerNumber()

การยกเลิกการเชื่อมต่อตัวควบคุมของแฮนเดิล

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

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

แสดงวิธีการของตัวควบคุม

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

สำหรับรูปภาพตัวอย่างของตัวควบคุมที่ใช้ได้กับ Android ให้ดาวน์โหลด เทมเพลตเกมแพด Android TV (ZIP) มีตัวควบคุมสีขาวบนพื้นหลังสีดำและตัวควบคุมสีดำบนพื้นสีขาว ที่แสดงในรูปที่ 1 โดยอยู่ในรูปแบบไฟล์ PNG และเป็นไฟล์ Adobe® Illustrator®

รูปที่ 1 ตัวอย่างคำสั่งของตัวควบคุมโดยใช้ เทมเพลตเกมแพด Android TV