คู่มือนี้นำเสนอแนวทางปฏิบัติที่ดีที่สุดสำหรับการช่วยเหลือพิเศษใน Android TV และให้ คำแนะนำทั้งสำหรับแอปที่มาพร้อมเครื่องและไม่ใช่เนทีฟ
ทำไมการช่วยเหลือพิเศษจึงสำคัญกับแอป TV
ผู้ที่ดูโทรทัศน์มีความบกพร่องทางสายตาไม่ใช่เรื่องที่พบได้บ่อย ผู้คนประมาณ 2.2 พันล้านคนทั่วโลก มีความบกพร่องทางสายตา องค์การอนามัยโลก (WHO) ในสหรัฐอเมริกา ชาวอเมริกันอายุ 18 ปีขึ้นไปจำนวน 32 ล้านคนประสบกับ การสูญเสียการมองเห็นอย่างมีนัยสำคัญ จากแบบสำรวจการสัมภาษณ์ด้านสุขภาพแห่งชาติปี 2018 ในยุโรป ค่าประมาณ ทำให้เป็น 30 ล้าน บุคคลที่ตาบอดและมองเห็นบางส่วน ตามข้อมูลของ European Blind Union (EBU)
สิ่งสำคัญที่สุดคือผู้ใช้ที่มีความบกพร่องทางสายตาจะเพลิดเพลินกับเนื้อหาสื่อ ไม่ต่างอะไรกับพวกเพื่อนๆ ที่รู้จักกันอย่างเต็มที่ แบบสำรวจปี 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); }