अपने Android ऐप्लिकेशन को इस तरह बनाएं कि उसे सभी लोग इस्तेमाल कर सकें. वे लोग भी इस्तेमाल कर सकें जिन्हें सुलभता की ज़रूरत हो.
कम दृष्टि, कलर ब्लाइंडनेस, सुनने में दिक्कत, हाथ-पैरों को हिलाने में दिक्कत, सीखने-समझने में दिक्कत, और अन्य कई तरह की दिव्यांगताओं वाले लोग Android डिवाइसों का इस्तेमाल करते हैं. सुलभता को ध्यान में रखकर ऐप्लिकेशन डेवलप करने से, सुलभता से जुड़ी ज़रूरतों वाले लोगों को बेहतर अनुभव मिलता है.
इस पेज पर, सुलभता से जुड़े मुख्य एलिमेंट लागू करने के लिए दिशा-निर्देश दिए गए हैं. इससे सभी लोग आपके ऐप्लिकेशन को आसानी से इस्तेमाल कर पाएंगे. अपने ऐप्लिकेशन को ज़्यादा सुलभ बनाने के बारे में ज़्यादा जानकारी के लिए, ऐप्लिकेशन की सुलभता के सिद्धांत लेख पढ़ें.
टेक्स्ट को ज़्यादा आसानी से देखना
हमारा सुझाव है कि आपके ऐप्लिकेशन में मौजूद टेक्स्ट के हर सेट के लिए, कलर कंट्रास्ट—या टेक्स्ट के रंग और टेक्स्ट के पीछे मौजूद बैकग्राउंड के रंग के बीच, चमक में अंतर—एक तय थ्रेशोल्ड से ज़्यादा होना चाहिए. थ्रेशोल्ड इस बात पर निर्भर करता है कि टेक्स्ट का फ़ॉन्ट साइज़ क्या है और टेक्स्ट बोल्ड में दिखता है या नहीं:
- अगर टेक्स्ट 18sp से छोटा है या टेक्स्ट बोल्ड है और 14sp से छोटा है, तो फ़ोरग्राउंड और बैकग्राउंड के ऐसे रंगों का इस्तेमाल करें जिनसे कलर कंट्रास्ट रेशियो कम से कम 4.5:1 हो.
- अन्य सभी टेक्स्ट के लिए, रंग के कंट्रास्ट का अनुपात कम से कम 3:1 पर सेट करें.
नीचे दी गई इमेज में, टेक्स्ट और बैकग्राउंड के कलर कंट्रास्ट के दो उदाहरण दिखाए गए हैं:
अपने ऐप्लिकेशन में टेक्स्ट और बैकग्राउंड के रंग के कंट्रास्ट की जांच करने के लिए, ऑनलाइन कलर कंट्रास्ट चेकर या Accessibility Scanner ऐप्लिकेशन का इस्तेमाल करें.
बड़े और आसान कंट्रोल इस्तेमाल करें
अगर आपके ऐप्लिकेशन के कंट्रोल को देखना और टैप करना आसान है, तो उसके यूज़र इंटरफ़ेस (यूआई) को इस्तेमाल करना भी आसान होगा. टच इंटरफ़ेस के लिए, हमारा सुझाव है कि हर इंटरैक्टिव यूज़र इंटरफ़ेस (यूआई) एलिमेंट का फ़ोकस करने लायक एरिया या टच टारगेट साइज़ कम से कम 48dp x 48dp होना चाहिए. बड़ा साइज़ और भी बेहतर होता है.
Jetpack Compose में, पहले से मौजूद कई Material कॉम्पोनेंट में यह कम से कम साइज़ लागू होता है. जैसे, Button, IconButton, और ListItem. हालांकि, कस्टम इंटरैक्टिव एलिमेंट बनाते समय, आपको साइज़ खुद सेट करना होगा.
यहां दिए गए स्निपेट में, यूज़र इंटरफ़ेस (यूआई) के एक छोटे से एलिमेंट को ऐक्सेस किया जा सकता है. इसके लिए, उसे बड़ा टच टारगेट दिया गया है:
@Composable private fun LargeBox() { var clicked by remember { mutableStateOf(false) } Box( Modifier .size(100.dp) .background(if (clicked) Color.DarkGray else Color.LightGray) ) { Box( Modifier .align(Alignment.Center) .clickable { clicked = !clicked } .background(Color.Black) .sizeIn(minWidth = 48.dp, minHeight = 48.dp) ) } }
टच टारगेट के साइज़ के बारे में ज़्यादा जानने के लिए, टच टारगेट के कम से कम साइज़ लेख पढ़ें.
हर यूज़र इंटरफ़ेस (यूआई) एलिमेंट के बारे में बताना
अपने ऐप्लिकेशन में मौजूद हर यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए, एक ऐसा ब्यौरा शामिल करें जिसमें एलिमेंट के मकसद के बारे में बताया गया हो. ज़्यादातर मामलों में, इस जानकारी को एलिमेंट के contentDescription एट्रिब्यूट में शामिल किया जाता है. जैसा कि यहां दिए गए कोड स्निपेट में दिखाया गया है:
@Composable private fun ShareButton(onClick: () -> Unit) { IconButton(onClick = onClick) { Icon( imageVector = Icons.Filled.Share, contentDescription = stringResource(R.string.label_share) ) } }
ध्यान दें कि आपको Text कंपोज़ेबल के लिए contentDescription देने की ज़रूरत नहीं है. Android की सुलभता सेवाएं (जैसे, TalkBack) टेक्स्ट को अपने-आप पढ़कर सुनाती हैं.
अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) एलिमेंट में ब्यौरे जोड़ते समय, इन सबसे सही तरीकों को ध्यान में रखें:
ब्यौरे का इस्तेमाल, इंटरैक्शन के मकसद और नतीजे के बारे में बताने के लिए करें. इसमें विज़ुअल की जानकारी न दें. किसी यूज़र इंटरफ़ेस (यूआई) एलिमेंट का टाइप दिखाने के लिए,
Roleसिमैंटिक्स प्रॉपर्टी (जैसे,Role.ButtonयाRole.Switch) का इस्तेमाल करें. इस तरह, स्क्रीन रीडर एलिमेंट को सही तरीके से बोल सकते हैं.ब्यौरे में दोहराव से बचें. उदाहरण के लिए, अगर किसी बटन को चुनने पर आपके ऐप्लिकेशन में "सबमिट करें" कार्रवाई होती है, तो बटन के ब्यौरे को
"Submit"के तौर पर मार्क करें, न कि"Submit button"के तौर पर.हर ब्यौरा यूनीक होना चाहिए. इस तरह, जब स्क्रीन रीडर इस्तेमाल करने वाले लोगों को किसी एलिमेंट के बारे में बार-बार जानकारी मिलती है, तो वे यह सही तरीके से पहचान पाते हैं कि फ़ोकस उस एलिमेंट पर है जिस पर पहले भी फ़ोकस किया गया था. खास तौर पर,
LazyColumnजैसी सूची में मौजूद हर आइटम का ब्यौरा अलग होना चाहिए. हर ब्यौरे में, आइटम के हिसाब से यूनीक कॉन्टेंट होना चाहिए. जैसे, जगहों की सूची में किसी शहर का नाम.सिर्फ़ सजावटी एलिमेंट को मार्क करने के लिए
hideFromAccessibilityएपीआई का इस्तेमाल करें, ताकि सुलभता सेवाएं उन्हें अनदेखा कर सकें. अगर किसी यूज़र इंटरफ़ेस (यूआई) एलिमेंट मेंcontentDescriptionपैरामीटर है, लेकिन वह सिर्फ़ सजावट के लिए है (जैसे किIcon, जो किसी दूसरे यूज़र इंटरफ़ेस एलिमेंट का हिस्सा है), तोnullपास करें, ताकि एक ही चीज़ के लिए बार-बार लेबल न करना पड़े. इस्तेमाल के ज़्यादा उदाहरणों के लिए, मर्ज करना और मिटाना लेख पढ़ें.अपने कोड की जांच करें, ताकि यह पक्का किया जा सके कि कॉन्टेंट का ब्यौरा उम्मीद के मुताबिक डिलीवर हो रहा है. Android Lint, Compose टेस्टिंग, और मैन्युअल और ऑटोमेटेड टेस्ट टूल, सामान्य समस्याओं के बारे में सूचना दे सकते हैं. साथ ही, लागू करने से जुड़ी समस्याओं का पता लगा सकते हैं.
अन्य संसाधन
अपने ऐप्लिकेशन को ज़्यादा से ज़्यादा लोगों तक पहुंचाने के बारे में ज़्यादा जानने के लिए, यहां दिए गए अतिरिक्त संसाधन देखें: