คู่มือนี้มีแนวทางปฏิบัติแนะนำสำหรับการช่วยเหลือพิเศษใน Android TV และให้คำแนะนำสำหรับทั้งแอปเนทีฟและแอปที่ไม่ใช่เนทีฟ
ทำไมการช่วยเหลือพิเศษจึงสำคัญสำหรับแอป TV
ความบกพร่องทางการมองเห็นพบได้ไม่น้อยในกลุ่มประชากรที่ดูทีวี องค์การอนามัยโลก (WHO) ประมาณการว่ามีผู้ที่มีความบกพร่องทางการมองเห็น 2.2 พันล้านคนทั่วโลก ในสหรัฐอเมริกา ชาวอเมริกันอายุ 18 ปีขึ้นไป 32 ล้านคนเคยมีอาการสูญเสียการมองเห็นอย่างรุนแรง ตาม การสำรวจ National Health Interview Survey ปี 2018 ในยุโรป สหภาพคนตาบอดแห่งยุโรป (EBU) ประมาณการว่ามีคนตาบอดและคนที่มีสายตาเลือนราง 30 ล้านคน
สิ่งที่สำคัญที่สุดคือผู้ใช้ที่มีความบกพร่องทางการมองเห็นชื่นชอบเนื้อหาสื่อต่างๆ ไม่ต่างจากเพื่อนๆ ที่มองเห็นได้ปกติ การสำรวจปี 2017 ที่ Comcast เป็นผู้ว่าจ้าง แสดงให้เห็นว่า 96% ของผู้ใช้ที่ตาบอดหรือมีสายตาเลือนรางดู ทีวีเป็นประจำ โดย 81% ดูมากกว่า 1 ชั่วโมงต่อวัน อย่างไรก็ตาม 65% ยังรายงานว่าพบปัญหาในการค้นหาเนื้อหาที่กำลังออกอากาศทางทีวี และในการสำรวจปี 2020 ใน สหราชอาณาจักร, 80% ของผู้พิการกล่าวว่าเคยพบปัญหาการช่วยเหลือพิเศษกับบริการสตรีมมิงวิดีโอ แบบออนดีมานด์
แม้ว่าเทคโนโลยีสิ่งอำนวยความสะดวกจะช่วยผู้ใช้ที่มีสายตาเลือนรางได้ แต่ก็ยังคงมีความสำคัญที่จะต้องสนับสนุนการช่วยเหลือพิเศษในเส้นทางการค้นพบเนื้อหาสำหรับแอปในทีวี เช่น ให้ความสำคัญเป็นพิเศษกับการให้คำแนะนำในการนำทางและการติดป้ายกำกับองค์ประกอบต่างๆ อย่างเหมาะสม รวมถึงตรวจสอบว่าแอปในทีวีทำงานได้ดีกับฟีเจอร์การช่วยเหลือพิเศษ เช่น TalkBack ขั้นตอนเหล่านี้จะช่วยปรับปรุงประสบการณ์ของผู้ใช้ที่มีความบกพร่องทางการมองเห็นได้อย่างมาก
ขั้นตอนแรกในการปรับปรุงการช่วยเหลือพิเศษคือการตระหนักถึงความสำคัญ คู่มือนี้จะช่วยให้คุณและทีมค้นพบปัญหาการช่วยเหลือพิเศษในแอป TV
แหล่งข้อมูลการช่วยเหลือพิเศษของ 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 สามารถตรวจสอบการเปลี่ยนแปลงค่ากำหนดของผู้ใช้ได้โดย
การเพิ่ม Listener ลงใน
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); }