TalkBack হল Android এর জন্য Google এর একটি বিল্ট-ইন স্ক্রীন রিডার, যা Android Accessibility Suite প্যাকেজের অংশ। এটি ইন্টারফেস উপাদান গোল দেয় এবং অঞ্জলির মাধ্যমে ডিভাইস নিয়ন্ত্রণের অনুমতি দেয়, যা দৃষ্টিহীন এবং দুর্বল দৃষ্টিসম্পন্ন ব্যবহারকারীদের স্মার্টফোনের ফাংশনগুলিতে সম্পূর্ণ প্রবেশাধিকার দেয়। Google Accessibility Help (2025) অনুযায়ী, TalkBack অধিকাংশ Android ডিভাইসে প্রি-ইনস্টল এবং বিভিন্ন ভয়স ইঞ্জিনের সাথে 30টির বেশী ভাষা সমর্থন করে।
মূখ্য বিষয়সমূহ
TalkBack হল Android এর জন্য একটি স্ক্রীন রিডার, যা Google দ্বারা উন্নীত এবং Android Accessibility Suite এর অংশ। এটি দৃষ্টিপ্রতিবন্ধী ব্যবহারকারীদের জন্য ভয়স প্রতিপুষ্টি এবং অঞ্জলি নিয়ন্ত্রণ প্রদান করে। TalkBack স্মার্টফোন, ট্যাবলেট, Smart TV এবং Wear OS চালিত পরিধেয় ডিভাইসে কাজ করে।
TalkBack প্রথম 2009 সালে Android 1.6 (Donut) এ আবির্ভাব হয়েছিল। প্রথমে এটি একটি পৃথক প্রকল্প ছিল, কিন্তু Android 4.0 (Ice Cream Sandwich) এর মাঝের সঙ্গে এটি Android Accessibility Suite এর অংশ হয়ে গিয়েছে — পরিষেবাগুলির একটি সেট যার মধ্যে Switch Access এবং Select to Speak ও অন্তর্ভুক্ত। Android 10 থেকে শুরু করে, Google Play পরিষেবা সম্পন্ন সকল ডিভাইসে TalkBack প্রি-ইনস্টল থাকে, যার মধ্যে অঙ্গীদার ডিভাইস — Samsung, Xiaomi, Oppo এবং অন্যান্য অন্তর্ভুক্ত।
TalkBack বিভিন্ন ভয়স ইঞ্জিনের সাথে 30টির বেশী ভাষা সমর্থন করে: Google Text-to-Speech, Samsung TTS এবং তৃতীয় পক্ষের। বাংলার জন্য, Google TTS প্রাকৃতিক উচ্চারণ এবং সঠিক স্বর প্রদান করে। ব্যবহারকারী TalkBack সেটিংসে কথার গতি, পিচ এবং কণ্ঠের লিঙ্গ নির্বাচন করতে পারে।
TalkBack AccessibilityService এর উপর ভিত্তি করে কাজ করে — Android এর একটি সিস্টেম পথদান যা অ্যাপগুলিকে ইন্টারফেসের অবস্থা সম্পর্কে তথ্য পেতে এবং প্রোগ্রামাটিকভাবে এর সাথে যোগাযোগ করতে অনুমতি দেয়। যখন TalkBack চালু থাকে, এটি সকল স্পর্শ ইভেন্ট ইন্টারসেপ্ট করে এবং সেগুলিকে বিশেষ স্ক্রীন রিডার অঞ্জলিতে রূপান্তর করে।
TalkBack এর কাজের চাবিকঠা হল অ্যাক্সেসিবিলিটি ফোকাস। স্ট্যান্ডার্ড ইনপুট ফোকাসের বিপরীতে, যা টেক্সট ফিল্ড হাইলাইট হিসেবে দৃশ্যমান হয়, অ্যাক্সেসিবিলিটি ফোকাস উপাদানের চারপাশে একটি হলুদ ফ্রেম হিসেবে প্রদর্শিত হয় এবং TalkBack ছাড়া ব্যবহারকারীদের কাছে অদৃশ্য। যখন অ্যাক্সেসিবিলিটি ফোকাস কোনো উপাদানে আসে, TalkBack এর বিষয়বস্তু, ধরন এবং অবস্থা গোল দেয়।
ব্যবহারকারী অঞ্জলির মাধ্যমে অ্যাক্সেসিবিলিটি ফোকাস সরায়: ডানে স্যাইপ — পরবর্তী উপাদান, বামে স্যাইপ — পূর্ববর্তী উপাদান। উপাদানগুলি AccessibilityNodeInfo দ্বারা নির্ধারিত ক্রমে পরিদর্শিত হয় — অ্যাক্সেসিবিলিটি ট্রি যা Android প্রতিটি স্ক্রীনের জন্য তৈরি করে। ডেভেলপার accessibilityTraversalBefore এবং accessibilityTraversalAfter বৈশিষ্ট্যের মাধ্যমে ক্রম প্রভাবিত করতে পারে, যা কস্টম লেআউট সহ জটিল স্ক্রীনের জন্য বিশেষ গুরুত্বপূর্ণ।
স্ক্রীনের প্রতিটি View অ্যাক্সেসিবিলিটি ট্রিতে একটি নোড দ্বারা উপস্থাপিত হয় — একটি AccessibilityNodeInfo অবজেক্ট। এই অবজেক্টে থাকে: উপাদানের টেক্সট (contentDescription বা ভিউর টেক্সট), উপাদানের ধরন (বাটন, চেকবাক্স, ইনপুট ফিল্ড), অবস্থা (সক্রিয়/নিষ্ক্রিয়/নির্বাচিত), স্ক্রীনে অবস্থান এবং উপলব্ধ কর্মগুলির একটি তালিকা। TalkBack এই ট্রি পরিদর্শন করে এবং প্রতিটি নোড ক্রমানুযায়ে গোল দেয়।
যদি কোনো ভিউর টেক্সট বিষয়বস্তু না থাকে (যেমন বিবরণ ছাড়া একটি ImageView), তবে এটি TalkBack এর কাছে অদৃশ্য হয়ে যায় — ব্যবহারকারী এর অস্তিত্ব সম্পর্কে জানতে পারবে না। এই সমস্যা সমাধানের জন্য, ডেভেলপার contentDescription সেট করে — একটি টেক্সট বিবরণ যা TalkBack নিরবতার বদলে বলে। Android পরিবর্তনশীল অবস্থা (চেক/আনচেক) সহ উপাদানের জন্য stateDescription এবং ইংগিত সহ ইনপুট ফিল্ডের জন্য hintText ও সমর্থন করে।
TalkBack স্ট্যান্ডার্ড Android অঞ্জলিগুলিকে বিশেষ স্ক্রীন রিডার অঞ্জলিতে রূপান্তর করে। অধিকাংশ কাজ এক বা দুই আঙ্গুলিতে সম্পাদিত হয়, যখন তিন আঙ্গুলির অঞ্জলি বৈশ্বিক কর্মের জন্য সংরক্ষিত।
| কর্ম | অঞ্জলি | ফলাফল |
|---|---|---|
| উপাদান গোল দিন | একক স্পর্শ | উপাদানের নাম এবং ধরন বলে |
| সক্রিয় করুন | ডবল ট্যাপ | বাটন চাপ বা নেভিগেশন |
| পরবর্তী | ডানে স্যাইপ | পরবর্তী উপাদান |
| পূর্ববর্তী | বামে স্যাইপ | পূর্ববর্তী উপাদান |
| স্ক্রল | 2 আঙ্গুলিতে স্যাইপ | তালিকা স্ক্রলিং |
| TalkBack মেনু | উপরে-বামে স্যাইপ | বৈশ্বিক সেটিংস মেনু |
উপরে-বামে স্যাইপ (L-আকারের স্যাইপ) অঞ্জলিটি TalkBack এর বৈশ্বিক মেনু খোলে, যেখানে ব্যবহারকারী কথার গতি পরিবর্তন করতে পারে, স্ক্রীন কার্টন চালু করতে পারে, টিউটোরিয়াল শুরু করতে পারে বা সেটিংস খোলতে পারে। TalkBack উপাদানের জন্য একটি কন্টেক্সট মেনু ও সমর্থন করে: উপরে-ডানে স্যাইপ বর্তমান উপাদানের জন্য উপলব্ধ কর্মগুলির একটি তালিকা খোলে (যেমন টেক্সট ফিল্ডের জন্য «কপি», «পেস্ট» বা চ্যাট বার্তার জন্য «মুছুন»)।
Android অ্যাক্সেসিবিলিটি কনফিগারেশনের জন্য একটি সমৃদ্ধ API প্রদান করে। মৌলিক স্তর হল contentDescription, কিন্তু গুণমানের TalkBack সমর্থনের জন্য AccessibilityNodeInfo, AccessibilityDelegate এবং LiveRegion এর সাথে কাজ করা প্রয়োজন।
android:contentDescription বৈশিষ্ট্যটি TalkBack এর জন্য উপাদানের টেক্সট বিবরণ নির্ধারণ করে। এটি ImageView, ImageButton, FloatingActionButton এবং টেক্সট বিষয়বস্তু ছাড়া যে কোনো কস্টম View এর জন্য আবশ্যক। স্ট্যান্ডার্ড উপাদানের (TextView, Button) জন্য contentDescription অলচ্ছিল — TalkBack স্বচালিতভাবে টেক্সট পড়ে নেবে।
val avatarView = ImageView(this)
avatarView.contentDescription = "ব্যবহারকারীর আভার"
avatarView.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_YES
val playButton = ImageButton(this)
playButton.contentDescription = "ভিডিও চলান"
val progressBar = ProgressBar(this)
progressBar.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_NO
importantForAccessibility ফ্ল্যাগটি TalkBack এর জন্য উপাদানের দৃশ্যমানতা নিয়ন্ত্রণ করে। NO এর মান অ্যাক্সেসিবিলিটি ট্রি থেকে উপাদানটি লুকায় — সাজান্ত ছবি, ইংিকেটার এবং কস্টম পেশপটভূমির জন্য দকারি। YES এর মান যদিও এর কোনো টেক্সট না থাকে তবেও উপাদানটিকে জোর করে পরিদর্শনে অন্তর্ভুক্ত করে। NO এর অপব্যবহার না করা গুরুত্বপূর্ণ: সেমান্টিকভাবে গুরুত্বপূর্ণ উপাদান লুকিয়ে ফেলা অ্যাপটিকে TalkBack ব্যবহারকারীদের জন্য অগাম্য করে তোলে।
কস্টম Views এর জন্য যা স্ট্যান্ডার্ড ক্লিক হ্যান্ডলার ব্যবহার করে না, AccessibilityDelegate ওভারাইড করা প্রয়োজন — একটি ক্লাস যা অ্যাক্সেসিবিলিটি ইভেন্ট প্রক্রিয়া করে। ডেলিগেট কস্টম বিবরণ, উপাদানের ধরন এবং উপলব্ধ কর্মগুলির তালিকা নির্ধারণ করার অনুমতি দেয়, যা TalkBack কন্টেক্সট মেনুর মাধ্যমে ব্যবহারকারীকে প্রদান করবে।
class CustomButtonDelegate : View.AccessibilityDelegate() {
override fun onInitializeAccessibilityNodeInfo(
host: View, info: AccessibilityNodeInfoCompat
) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.text = "কস্টম বাটন"
info.className = Button::class.java.name
info.addAction(
AccessibilityNodeInfoCompat.AccessibilityActionCompat(
R.id.custom_action, "শেয়ার করুন"
)
)
}
override fun performAccessibilityAction(
host: View, action: Int, args: Bundle?
): Boolean {
if (action == R.id.custom_action) {
shareContent()
return true
}
return super.performAccessibilityAction(host, action, args)
}
}
উদাহরণে, ডেলিগেট TalkBack কে জানায় যে উপাদানটি একটি বাটন (className = Button) এবং একটি কস্টম «শেয়ার করুন» কর্ম প্রদান করে যা TalkBack কন্টেক্সট মেনুতে উপস্থিত হবে। performAccessibilityAction পদ্ধতি এই কর্মের আহ্বান প্রক্রিয়া করে। ডেলিগেট ছাড়া, TalkBack কস্টম View কে একটি সাধারণ অ-ইন্টারাক্টিভ অঞ্চল বলে মনে করবে, এবং ব্যবহারকারী এর সাথে যোগাযোগ করতে পারবে না।
সম্পূর্ণ TalkBack সমর্থনে শুধুমাত্র contentDescription নয়, বরং ফোকাস পরিচালনা, ডাইনামিক আপডেটের জন্য LiveRegion, সক্রীন রিডার চালু রেখে পরীক্ষা এবং বিভিন্ন Android সংস্করণের জন্য অভিযোজন অন্তর্ভুক্ত।
যখন স্ক্রীনের কন্টেন্ট ব্যবহারকারীর স্পষ্ট কর্ম ছাড়াই পরিবর্তিত হয় (যেমন একটি নতুন বার্তার বিজ্ঞপ্তি আসে বা একটি লাইক কাউন্টার আপডেট হয়), TalkBack কে একটি বিজ্ঞপ্তি পেতে হবে। এর জন্য, XML এ একটি View এর জন্য android:accessibilityLiveRegion বৈশিষ্ট্য বা কোডে setAccessibilityLiveRegion() পদ্ধতি ব্যবহৃত হয়। polite মান বর্তমান গোল শেষ হোওয়ার পর ঘোষণা যোগ করে, যখন assertive তাত্ক্ষণিকভাবে বাধা দেয়।
val statusText = TextView(this)
statusText.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_POLITE
// টেক্সট আপডেট করার সময় TalkBack স্বচালিতভাবে
// পরিবর্তন ঘোষণা করবে
statusText.text = "আন্নার কাছ থেকে নতুন বার্তা"
// গুরুতর বিজ্ঞপ্তির জন্য — assertive
errorBanner.accessibilityLiveRegion =
View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE
LiveRegion হল iOS এ UIAccessibility.post এর Android সমতুল্য। অধিকাংশ আপডেটের (নতুন বার্তা, স্থিতি আপডেট) জন্য polite ব্যবহার করুন এবং assertive শুধুমাত্র গুরুতর ত্রুটির (ব্যর্থ পেমেন্ট, সংযোগ হারিয়ে যাওয়া) জন্য ব্যবহার করুন। assertive এর অত্যধিক ব্যবহার একটি নকারাত্মক ব্যবহারকারী অভিজ্ঞতা তৈরি করে — TalkBack ক্রমাগত বর্তমান গোলে বাধা দেবে।
জটিল স্ক্রীনের জন্য যেখানে একাধিক Views একটি লজিক্যাল ইউনিট গঠন করে, নেভিগেশন ওভারাইড করতে AccessibilityNodeProvider বা focusSearch ব্যবহৃত হয়। উদাহরণস্বরূপ, 42 কোষ্ট (6 সপ্তাহ × 7 দিন) সহ একটি কস্টম ক্যালেন্ডার ব্যবহারকারীকে পরবর্তী ব্লকে যেতে সকল 42 আইটেমের মাধ্যমে স্ক্রল করতে বাধ্য করা উচিত নয়। ডেভেলপার কোষ্টগুলিকে লজিক্যাল ইউনিটে গ্রুপ করতে পারে: মাস → সপ্তাহ → দিন।
Jetpack Compose এর জন্য, .semantics {} মডিফায়ার একটি অনুরূপ API প্রদান করে: contentDescription, liveRegion, stateDescription, disabled এবং customActions। Compose প্রতিটি View এর জন্য ম্যানুয়াল accessibilityDelegate কনফিগারেশন ছাড়াই উপাদান গ্রুপিং সহজ করতে একটি সিংগেলে সেমান্টিক্সে মার্জ করতে mergeDescendants ও সমর্থন করে।
Button(
onClick = { sendMessage() },
modifier = Modifier.semantics {
contentDescription("বার্তা প্রেরণ করুন")
stateDescription("প্রেরণের জন্য প্রস্তুত")
}
) {
Icon(Icons.Filled.Send, "প্রেরণ করুন")
}
TalkBack পরীক্ষা সেবা চালু সহ একটি ভৌতিক ডিভাইস বা এমুলেটর ব্যবহার করে করা হয়। স্ক্রীন বন্ধ (স্ক্রীন কার্টন) রেখে মূল ব্যবহারকারী পরিদৃশ্য দিয়ে যাওয়ার সুপারিশ করা হয় — এটি িজুয়াল প্রতিপুষ্টির সম্পূর্ণ অনুপস্থিতি অনুকরণ করে। Android আরও Accessibility Scanner প্রদান করে — অ্যাক্সেসিবিলিটি সমস্যা স্বচালিতভাবে সনাক্তে একটি টুল, যা contentDescription ছাড়া উপাদান, অতি ছোট টাচ টার্গেট এবং নিম্ন কন্ট্রাস্ট হাইলাইট করে।
সাধারণতয় জিজ্ঞাসিত প্রশ্ন
সেটিংস → অ্যাক্সেসিবিলিটি → TalkBack → চালু করুন। দ্রুত সক্রিয় করার জন্য, 3 সেকেন্ড ধরে উভয় ভোলিউম কী চাপ একসাংগে টিপুন। Google Assistant «TalkBack চালু করুন» ভয়স কমান্ডের মাধ্যমে ও TalkBack চালু করতে পারে।
TalkBack হল Android এর একটি স্ক্রীন রিডার, VoiceOver হল iOS এর জন্য। TalkBack AccessibilityService এবং একটি হলুদ ফ্রেম সহ অ্যাক্সেসিবিলিটি ফোকাস ব্যবহার করে, যখন VoiceOver UIAccessibility এবং রোটার ব্যবহার করে। অঞ্জলি এবং মেনু আলাদা: TalkBack এর বৈশ্বিক মেনুর জন্য L-আকারের স্যাইপ রয়েছে।
সকল ImageView এবং কস্টম উপাদানের জন্য contentDescription সেট করুন। সাজান্ত উপাদান লুকাতে importantForAccessibility ব্যবহার করুন। ডাইনামিক আপডেটের জন্য accessibilityLiveRegion কনফিগার করুন এবং Accessibility Scanner দিয়ে যাচাই করুন। Compose এ, .semantics{} মডিফায়ার ব্যবহার করুন।
এটি একটি অবজেক্ট যা অ্যাক্সেসিবিলিটি ট্রিতে একটি ইন্টারফেস উপাদানকে প্রতিনিধিত্ব করে। এতে টেক্সট, ধরন, অবস্থা, অবস্থান এবং কর্মগুলির একটি তালিকা রয়েছে। TalkBack নেভিগেশনের জন্য এই ট্রিতে ঘুরে। ডেভেলপার AccessibilityDelegate বা XML বৈশিষ্ট্যের মাধ্যমে এটি পরিবর্তন করতে পারে।
importantForAccessibility যাচাই করুন — হয়তো এটি NO এ সেট করা আছে। নিশ্চিত করুন যে টেক্সট ছাড়া উপাদানের জন্য contentDescription সেট করা আছে। কস্টম View এর জন্য, onInitializeAccessibilityNodeInfo সহ AccessibilityDelegate বাস্তবায়ন করুন। রোগ নির্ণয়ের জন্য Accessibility Scanner ব্যবহার করুন।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন