Các phương pháp hay nhất về hỗ trợ tiếp cận cho Android TV

Hướng dẫn này trình bày các phương pháp hay nhất về hỗ trợ tiếp cận trên Android TV và đưa ra các đề xuất cho cả ứng dụng gốc và không phải gốc.

Tại sao khả năng hỗ trợ tiếp cận lại quan trọng đối với ứng dụng TV của tôi?

Khiếm thị không phải là vấn đề hiếm gặp đối với những người xem truyền hình. Theo ước tính của Tổ chức Y tế Thế giới (WHO), 2,2 tỷ người trên toàn cầu bị suy giảm thị lực. Ở Hoa Kỳ, 32 triệu người Mỹ từ 18 tuổi trở lên bị giảm thị lực đáng kể, theo Khảo sát phỏng vấn sức khoẻ quốc gia năm 2018. Ở Châu Âu, số liệu ước tính cho thấy con số này là 30 triệu người khiếm thị và một phần thị lực, theo Liên minh người mù Châu Âu (EBU).

Quan trọng nhất là người dùng bị khiếm thị cũng có thể thưởng thức nội dung nghe nhìn như những người dùng bình thường. Một khảo sát năm 2017 do Comcast thực hiện cho thấy 96% người dùng khiếm thị hoặc có thị lực kém thường xuyên xem TV, trong đó 81% xem hơn 1 giờ mỗi ngày. Tuy nhiên, 65% người dùng cũng cho biết họ gặp vấn đề khi tra cứu chương trình truyền hình. Ngoài ra, trong một cuộc khảo sát năm 2020 ở Vương quốc Anh, 80% người khuyết tật cho biết họ đã gặp vấn đề về hỗ trợ tiếp cận với các dịch vụ xem trực tuyến theo yêu cầu.

Mặc dù công nghệ hỗ trợ có thể và giúp ích cho người dùng có thị lực kém, nhưng việc hỗ trợ khả năng tiếp cận trong hành trình khám phá nội dung của ứng dụng TV đóng vai trò quan trọng. Ví dụ: hãy chú ý nhiều hơn đến việc cung cấp hướng dẫn điều hướng và gắn nhãn đúng cách cho các phần tử, đồng thời đảm bảo rằng các ứng dụng TV hoạt động tốt với các tính năng hỗ trợ tiếp cận như TalkBack. Các bước này có thể cải thiện đáng kể trải nghiệm cho người dùng bị suy giảm thị lực.

Bước đầu tiên để cải thiện khả năng hỗ trợ tiếp cận là nhận thức. Hướng dẫn này có thể giúp bạn và nhóm của bạn phát hiện các vấn đề về hỗ trợ tiếp cận với ứng dụng TV.

Tài nguyên hỗ trợ tiếp cận trên Android

Để tìm hiểu thêm về tính năng hỗ trợ tiếp cận trên Android, hãy xem tài nguyên phát triển tính năng hỗ trợ tiếp cận của chúng tôi.

Chia tỷ lệ văn bản

Ứng dụng Android TV phải tuân theo lựa chọn ưu tiên của người dùng về tỷ lệ văn bản bằng cách hỗ trợ nhiều mật độ điểm ảnh.

Hãy đặc biệt chú ý đến những yếu tố sau:

  • Sử dụng wrap_content cho các kích thước trong thành phần giao diện người dùng.
  • Đảm bảo bố cục sắp xếp lại các thành phần khi kích thước của các thành phần đó thay đổi tuỳ thuộc vào tỷ lệ văn bản.
  • Đảm bảo các thành phần vẫn vừa với màn hình ở tỷ lệ văn bản lớn hơn.
  • Đừng sử dụng đơn vị kích thước văn bản sp cho các thành phần không linh hoạt.
  • Kiểm tra giá trị của FONT_SCALE để điều chỉnh trong chế độ xem tuỳ chỉnh:

    // Checking font scale with Context
    val scale = resources.configuration.fontScale
    Log.d(TAG, "Text scale is: " + scale)
    

Bạn có thể thay đổi tỷ lệ văn bản bằng lệnh sau:

adb shell settings put system font_scale 1.2f

Trên Android 12 trở lên, người dùng có thể thay đổi tỷ lệ văn bản trong phần cài đặt thiết bị.

Bố cục bàn phím

Trong Android 13 (API cấp 33) trở lên, bạn có thể sử dụng getKeyCodeForKeyLocation() để tra cứu mã phím cho các vị trí phím dự kiến. Điều này có thể cần thiết nếu người dùng đã liên kết lại một số vị trí chính hoặc nếu họ đang sử dụng bàn phím không có bố cục thông thường.

Mô tả bằng âm thanh

Trong Android 13 (API cấp 33) trở lên, một tuỳ chọn hỗ trợ tiếp cận mới trên toàn hệ thống cho phép người dùng bật tính năng mô tả bằng âm thanh trên tất cả ứng dụng. Ứng dụng Android TV có thể kiểm tra lựa chọn ưu tiên của người dùng bằng cách truy vấn lựa chọn đó bằng 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
}

Các ứng dụng Android TV có thể theo dõi thời điểm lựa chọn ưu tiên của người dùng thay đổi bằng cách thêm trình nghe vào 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);
}