คู่มือนี้จะแสดงแนวทางปฏิบัติแนะนำสำหรับการช่วยเหลือพิเศษใน Android TV รวมถึงคำแนะนำสำหรับทั้งแอปที่มาพร้อมเครื่องและแอปที่ไม่ได้มาพร้อมเครื่อง
เหตุใดการช่วยเหลือพิเศษจึงสำคัญต่อแอปทีวีของฉัน
ความบกพร่องทางสายตาเป็นเรื่องปกติในหมู่ผู้ชมทีวี องค์การอนามัยโลก (WHO) ประมาณว่าผู้คนทั่วโลกกว่า 2.2 พันล้านคนมีภาวะการมองเห็นบกพร่อง ในสหรัฐอเมริกา ชาวอเมริกัน 32 ล้านคนอายุ 18 ปีขึ้นไปประสบปัญหาการสูญเสียการมองเห็นอย่างรุนแรง อ้างอิงจากแบบสํารวจการสัมภาษณ์ด้านสุขภาพแห่งชาติปี 2018 ในยุโรป สหภาพคนตาบอดแห่งยุโรป (EBU) ประเมินว่ามีผู้ที่ตาบอดหรือตาไม่ดีประมาณ 30 ล้านคน
ที่สำคัญที่สุดคือผู้ใช้ที่มีความบกพร่องทางสายตาสามารถเพลิดเพลินกับเนื้อหาสื่อได้เช่นเดียวกับผู้ใช้ที่มองเห็นได้ปกติ แบบสํารวจปี 2017 ที่ Comcast เป็นผู้ว่าจ้างแสดงให้เห็นว่าผู้ใช้ที่ตาบอดหรือมีสายตาเลือนราง 96% ดูทีวีเป็นประจำ โดย 81% ดูทีวีมากกว่า 1 ชั่วโมงต่อวัน อย่างไรก็ตาม 65% ของผู้ตอบยังรายงานว่าพบปัญหาในการค้นหารายการทีวีที่กำลังฉาย และจากแบบสำรวจในปี 2020 ในสหราชอาณาจักร พบว่าคนพิการ 80% เคยพบปัญหาการช่วยเหลือพิเศษเกี่ยวกับบริการสตรีมมิงวิดีโอออนดีมานด์
แม้ว่าเทคโนโลยีความช่วยเหลือพิเศษจะช่วยผู้ใช้ที่มีสายตาเลือนรางได้ แต่ก็จำเป็นต้องรองรับการช่วยเหลือพิเศษในเส้นทางการค้นพบเนื้อหาสำหรับแอปทีวี เช่น ให้ความสำคัญเป็นพิเศษกับการให้คำแนะนำในการไปยังส่วนต่างๆ และการติดป้ายกำกับองค์ประกอบอย่างเหมาะสม และตรวจสอบว่าแอปในทีวีทำงานร่วมกับฟีเจอร์การช่วยเหลือพิเศษ เช่น TalkBack ได้ดี ขั้นตอนเหล่านี้จะช่วยปรับปรุงประสบการณ์ของผู้ใช้ที่มีความบกพร่องทางการมองเห็นได้อย่างมาก
ขั้นแรกในการปรับปรุงการช่วยเหลือพิเศษคือการรับรู้ คู่มือนี้จะช่วยคุณและทีมในการค้นหาปัญหาการช่วยเหลือพิเศษเกี่ยวกับแอปทีวี
แหล่งข้อมูลการช่วยเหลือพิเศษของ Android
ดูข้อมูลเพิ่มเติมเกี่ยวกับการช่วยเหลือพิเศษใน Android ได้ที่แหล่งข้อมูลสำหรับการพัฒนาการช่วยเหลือพิเศษ
อัตราส่วนข้อความ
แอป Android TV ควรเคารพความต้องการของผู้ใช้ในการปรับขนาดข้อความโดยรองรับความหนาแน่นของพิกเซลในระดับต่างๆ
โปรดระมัดระวังเป็นพิเศษในสิ่งต่อไปนี้
- ใช้
wrap_content
สำหรับมิติข้อมูลในคอมโพเนนต์ UI - ตรวจสอบว่าเลย์เอาต์จัดเรียงองค์ประกอบใหม่เมื่อขนาดขององค์ประกอบเปลี่ยนแปลงตามขนาดข้อความ
- ตรวจสอบว่าคอมโพเนนต์ยังคงพอดีกับหน้าจอเมื่อปรับขนาดข้อความให้ใหญ่ขึ้น
- อย่าใช้หน่วยขนาดข้อความ sp สำหรับคอมโพเนนต์ที่ไม่ยืดหยุ่น
ตรวจสอบค่าของ
FONT_SCALE
เพื่อดูการปรับในมุมมองที่กำหนดเอง// Checking font scale with Context val scale = resources.configuration.fontScale Log.d(TAG, "Text scale is: " + scale)
คุณเปลี่ยนขนาดข้อความได้ด้วยคำสั่งต่อไปนี้
adb shell settings put system font_scale 1.2f
ใน Android 12 ขึ้นไป ผู้ใช้สามารถเปลี่ยนการปรับขนาดข้อความได้จากการตั้งค่าอุปกรณ์
รูปแบบแป้นพิมพ์
ใน Android 13 (API ระดับ 33) ขึ้นไป คุณสามารถใช้ getKeyCodeForKeyLocation()
เพื่อค้นหารหัสคีย์สำหรับตำแหน่งคีย์ที่คาดไว้
ซึ่งอาจจำเป็นในกรณีที่ผู้ใช้แมปตำแหน่งแป้นพิมพ์บางตำแหน่งใหม่ หรือในกรณีที่ผู้ใช้ใช้แป้นพิมพ์ที่ไม่ได้เป็นเลย์เอาต์ปกติ
เสียงบรรยาย
ใน Android 13 (API ระดับ 33) ขึ้นไป การตั้งค่าการช่วยเหลือพิเศษใหม่สำหรับทั้งระบบจะช่วยให้ผู้ใช้เปิดใช้คำบรรยายแทนเสียงในแอปทั้งหมดได้ แอป Android TV สามารถตรวจสอบค่ากําหนดของผู้ใช้ได้โดยค้นหาด้วย isAudioDescriptionRequested()
Kotlin
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (am.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
แอป Android TV สามารถตรวจสอบเมื่อค่ากําหนดของผู้ใช้เปลี่ยนแปลงได้โดยเพิ่มตัวรับฟังในAccessibilityManager
ดังนี้
Kotlin
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }