แนวทางปฏิบัติแนะนำเกี่ยวกับการช่วยเหลือพิเศษสำหรับ Android TV

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

ทำไมการช่วยเหลือพิเศษจึงสำคัญสำหรับแอป TV

ความบกพร่องทางสายตาเป็นเรื่องปกติในหมู่ผู้ชมทีวี ผู้คนประมาณ 2.2 พันล้านคนทั่วโลก มีความบกพร่องทางสายตา องค์การอนามัยโลก (WHO) ในสหรัฐอเมริกา ชาวอเมริกันอายุ 18 ปีขึ้นไปจำนวน 32 ล้านคนประสบกับ การสูญเสียการมองเห็นอย่างมีนัยสำคัญ จากแบบสำรวจการสัมภาษณ์ด้านสุขภาพแห่งชาติปี 2018 ในยุโรป ค่าประมาณ ทำให้เป็น 30 ล้าน บุคคลที่ตาบอดและสายตาบางส่วน ตามข้อมูลของ European Blind Union (EBU)

สิ่งสำคัญที่สุดคือผู้ใช้ที่มีความบกพร่องทางสายตาจะเพลิดเพลินกับเนื้อหาสื่อ ไม่ต่างอะไรกับพวกเพื่อนๆ ที่รู้จักกันอย่างเต็มที่ แบบสํารวจปี 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 สามารถตรวจสอบได้เมื่อค่ากำหนดของผู้ใช้เปลี่ยนไป การเพิ่ม 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);
}