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 से शुरू करके, TalkBack Google Play सेवाओं वाले सभी उपकरणों पर प्री-इंस्टॉल होता है, जिसमें भागीदार उपकरण — 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 में विशेषता 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 कॉन्फ़िगरेशन के बिना एलिमेंट समूहीकरण को सरल बनाते हुए, मर्जडिसेंडेंट्स को एक में बण्णों को मर्ज करने के लिए भी समर्थन करता है।
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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें