अपने Android ऐप्लिकेशन को सभी के लिए इस्तेमाल करने लायक बनाने की कोशिश करें. इसमें वे लोग भी शामिल हैं जिन्हें सुलभता सुविधाओं की ज़रूरत होती है.
Android डिवाइसों का इस्तेमाल कई तरह के लोग करते हैं. इनमें ऐसे लोग भी शामिल हैं जिन्हें कम दिखता है, रंगों में अंतर कर पाने में दिक्कत होती है, कम सुनाई देता है, हाथों से काम करने में दिक्कत होती है, सीखने-बात करने में दिक्कत होती है, और कई अन्य तरह की दिव्यांगताएं हैं. सुलभता को ध्यान में रखकर ऐप्लिकेशन डेवलप करने से, सुलभता की ज़रूरत वाले लोगों को बेहतर उपयोगकर्ता अनुभव मिलता है.
इस पेज पर, सुलभता की मुख्य सुविधाओं को लागू करने के दिशा-निर्देश दिए गए हैं, ताकि हर कोई आपके ऐप्लिकेशन को आसानी से इस्तेमाल कर सके. अपने ऐप्लिकेशन को ज़्यादा सुलभ बनाने के तरीके के बारे में ज़्यादा जानकारी पाने के लिए, ऐप्लिकेशन की सुलभता को बेहतर बनाने के सिद्धांत देखें.
टेक्स्ट को ज़्यादा साफ़ तौर पर दिखाना
हमारा सुझाव है कि आपके ऐप्लिकेशन में मौजूद टेक्स्ट के हर सेट के लिए, रंगों का कंट्रास्ट या टेक्स्ट के रंग और उसके बैकग्राउंड के रंग की चमक में अंतर, एक तय सीमा से ज़्यादा होना चाहिए. थ्रेशोल्ड, टेक्स्ट के फ़ॉन्ट साइज़ और इस बात पर निर्भर करता है कि टेक्स्ट बोल्ड में दिखता है या नहीं:
- अगर टेक्स्ट 18sp से छोटा है या टेक्स्ट बोल्ड है और 14sp से छोटा है, तो ऐसे फ़ोरग्राउंड और बैकग्राउंड रंगों का इस्तेमाल करें जिनसे कम से कम 4.5:1 का कलर कंट्रास्ट रेशियो मिले.
- अन्य सभी टेक्स्ट के लिए, कलर कंट्रास्ट रेशियो को कम से कम 3:1 पर सेट करें.
यहां दी गई इमेज में, टेक्स्ट और बैकग्राउंड के कलर कंट्रास्ट के दो उदाहरण दिखाए गए हैं:
अपने ऐप्लिकेशन में टेक्स्ट और बैकग्राउंड के कलर कंट्रास्ट की जांच करने के लिए, ऑनलाइन कलर कंट्रास्ट चेकर या Accessibility Scanner ऐप्लिकेशन का इस्तेमाल करें.
बड़े और आसान कंट्रोल इस्तेमाल करें
अगर आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) के कंट्रोल आसानी से दिखते हैं और उन पर टैप करना आसान है, तो उसे इस्तेमाल करना भी आसान हो जाता है. टच इंटरफ़ेस के लिए, हमारा सुझाव है कि हर इंटरैक्टिव यूज़र इंटरफ़ेस (यूआई) एलिमेंट में, फ़ोकस करने लायक एरिया या टच टारगेट साइज़ कम से कम 48dpx48dp हो. बड़ी स्क्रीन पर खेलना और भी बेहतर है.
Jetpack Compose में, पहले से मौजूद कई मटीरियल कॉम्पोनेंट, जैसे कि 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 testing, और मैन्युअल और ऑटोमेटेड टेस्टिंग टूल, आम तौर पर होने वाली समस्याओं को फ़्लैग कर सकते हैं. साथ ही, आपके ऐप्लिकेशन में मौजूद समस्याओं को उजागर कर सकते हैं.
अन्य संसाधन
अपने ऐप्लिकेशन को ज़्यादा सुलभ बनाने के बारे में ज़्यादा जानने के लिए, यहां दिए गए अन्य संसाधन देखें: