অ্যান্ড্রয়েড টিভির জন্য অ্যাক্সেসযোগ্যতার সেরা অনুশীলন

এই নির্দেশিকাটি অ্যান্ড্রয়েড টিভিতে অ্যাক্সেসিবিলিটির জন্য সর্বোত্তম পদ্ধতি এবং নেটিভ ও নন-নেটিভ উভয় অ্যাপের জন্য সুপারিশ প্রদান করে।

আমার টিভি অ্যাপের জন্য অ্যাক্সেসিবিলিটি কেন গুরুত্বপূর্ণ?

টিভি দর্শকদের মধ্যে দৃষ্টিশক্তির সমস্যা অস্বাভাবিক নয়। বিশ্ব স্বাস্থ্য সংস্থা (WHO) অনুসারে, বিশ্বব্যাপী আনুমানিক ২.২ বিলিয়ন মানুষ দৃষ্টিশক্তির সমস্যায় ভুগছেন। ২০১৮ সালের ন্যাশনাল হেলথ ইন্টারভিউ সার্ভে অনুসারে, মার্কিন যুক্তরাষ্ট্রে ১৮ বছর বা তার বেশি বয়সী ৩২ মিলিয়ন আমেরিকান উল্লেখযোগ্য দৃষ্টিশক্তি হারিয়েছেন। ইউরোপীয় ব্লাইন্ড ইউনিয়ন (EBU) অনুসারে, ইউরোপে আনুমানিক ৩০ মিলিয়ন অন্ধ এবং আংশিক দৃষ্টিহীন ব্যক্তি রয়েছেন।

সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, দৃষ্টি প্রতিবন্ধী ব্যবহারকারীরাও তাদের পূর্ণ দৃষ্টিসম্পন্ন সমবয়সীদের মতোই মিডিয়া কনটেন্ট উপভোগ করেন। কমকাস্টের উদ্যোগে ২০১৭ সালে পরিচালিত একটি সমীক্ষায় দেখা গেছে যে, ৯৬% অন্ধ বা স্বল্প দৃষ্টিসম্পন্ন ব্যবহারকারী নিয়মিত টিভি দেখেন এবং তাদের মধ্যে ৮১% প্রতিদিন এক ঘণ্টার বেশি সময় ধরে টিভি দেখেন। তবে, ৬৫% ব্যবহারকারী টিভিতে কী চলছে তা খুঁজে বের করতে সমস্যার সম্মুখীন হওয়ার কথাও জানিয়েছেন। আর যুক্তরাজ্যে ২০২০ সালের একটি সমীক্ষায় , ৮০% প্রতিবন্ধী ব্যক্তি বলেছেন যে তারা ভিডিও অন-ডিমান্ড স্ট্রিমিং পরিষেবাগুলিতে প্রবেশগম্যতা সংক্রান্ত সমস্যার সম্মুখীন হয়েছেন।

যদিও সহায়ক প্রযুক্তি স্বল্প দৃষ্টিসম্পন্ন ব্যবহারকারীদের সাহায্য করতে পারে এবং করেও থাকে, টিভি অ্যাপের ক্ষেত্রে কনটেন্ট খুঁজে বের করার প্রক্রিয়ায় অ্যাক্সেসিবিলিটি বা প্রবেশগম্যতাকে সমর্থন করা জরুরি। উদাহরণস্বরূপ, নেভিগেশন নির্দেশনা প্রদান এবং উপাদানগুলোকে সঠিকভাবে লেবেল করার দিকে বাড়তি মনোযোগ দিন, এবং নিশ্চিত করুন যে টিভি অ্যাপগুলো টকব্যাক (TalkBack)-এর মতো অ্যাক্সেসিবিলিটি ফিচারগুলোর সাথে ভালোভাবে কাজ করে। এই পদক্ষেপগুলো দৃষ্টি প্রতিবন্ধী ব্যবহারকারীদের অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে।

অ্যাক্সেসিবিলিটি উন্নত করার প্রথম ধাপ হলো সচেতনতা। এই নির্দেশিকাটি আপনাকে এবং আপনার দলকে আপনার টিভি অ্যাপের অ্যাক্সেসিবিলিটি সংক্রান্ত সমস্যাগুলো খুঁজে বের করতে সাহায্য করতে পারে।

অ্যান্ড্রয়েড অ্যাক্সেসিবিলিটি রিসোর্স

অ্যান্ড্রয়েডে অ্যাক্সেসিবিলিটি সম্পর্কে আরও জানতে, আমাদের অ্যাক্সেসিবিলিটি ডেভেলপমেন্ট রিসোর্সসমূহ দেখুন।

টেক্সট স্কেলিং

অ্যান্ড্রয়েড টিভি অ্যাপগুলোর উচিত বিভিন্ন পিক্সেল ঘনত্ব সমর্থন করার মাধ্যমে টেক্সট স্কেলিংয়ের ক্ষেত্রে ব্যবহারকারীর পছন্দকে সম্মান করা।

বিশেষ যত্ন নিন:

  • UI কম্পোনেন্টগুলিতে ডাইমেনশনের জন্য wrap_content ব্যবহার করুন।
  • নিশ্চিত করুন যে টেক্সট স্কেলের ওপর নির্ভর করে কম্পোনেন্টগুলোর মাত্রা পরিবর্তিত হলে লেআউটগুলো সেগুলোকে পুনর্বিন্যাস করে।
  • নিশ্চিত করুন যে টেক্সটের আকার বড় করলেও উপাদানগুলো স্ক্রিনে ঠিকঠাকভাবে বসে যায়।
  • যেসব কম্পোনেন্ট ফ্লেক্সিবল নয়, সেগুলোর জন্য 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

অ্যান্ড্রয়েড ১২ এবং এর পরবর্তী সংস্করণগুলোতে, ব্যবহারকারীরা ডিভাইস সেটিংস থেকে টেক্সট স্কেলিং পরিবর্তন করতে পারেন।

কিবোর্ড লেআউট

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং এর পরবর্তী সংস্করণগুলোতে, প্রত্যাশিত কী-লোকেশনগুলোর কীকোড খুঁজে বের করার জন্য আপনি getKeyCodeForKeyLocation() ব্যবহার করতে পারেন। যদি ব্যবহারকারী কিছু কী-লোকেশন রি-ম্যাপ করে থাকেন অথবা এমন কোনো কীবোর্ড ব্যবহার করেন যার লেআউট গতানুগতিক নয়, তবে এটির প্রয়োজন হতে পারে।

অডিও বর্ণনা

অ্যান্ড্রয়েড ১৩ (এপিআই লেভেল ৩৩) এবং এর পরবর্তী সংস্করণগুলোতে, একটি নতুন সিস্টেম-ব্যাপী অ্যাক্সেসিবিলিটি প্রেফারেন্স ব্যবহারকারীদের সমস্ত অ্যাপ জুড়ে অডিও ডেসক্রিপশন চালু করার সুযোগ দেয়। অ্যান্ড্রয়েড টিভি অ্যাপগুলো isAudioDescriptionRequested() ব্যবহার করে ব্যবহারকারীর প্রেফারেন্সটি যাচাই করতে পারে।

কোটলিন

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
}

জাভা

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
}

অ্যান্ড্রয়েড টিভি অ্যাপগুলি AccessibilityManager এ একটি লিসেনার যোগ করে ব্যবহারকারীর পছন্দ কখন পরিবর্তিত হয় তা পর্যবেক্ষণ করতে পারে:

কোটলিন

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)
}

জাভা

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);
}