इनपुट के तरीके में बदलाव करने वाला एडिटर (IME) एक ऐसा उपयोगकर्ता कंट्रोल है जिसकी मदद से लोग टेक्स्ट डाल सकते हैं. Android, एक्सटेंसिबल इनपुट-मेथ फ़्रेमवर्क, जो ऐप्लिकेशन को उपयोगकर्ताओं को इनपुट के अन्य तरीके उपलब्ध कराने देता है. जैसे कि ऑन-स्क्रीन कीबोर्ड या स्पीच इनपुट. IME इंस्टॉल करने के बाद, उपयोगकर्ता इनमें से किसी एक को चुन सकते हैं और पूरे सिस्टम में उसका इस्तेमाल करें. एक बार में सिर्फ़ एक IME चालू किया जा सकता है.
Android सिस्टम में IME जोड़ने के लिए, एक ऐसा Android ऐप्लिकेशन बनाएं जिसमें ऐसी क्लास हो
बढ़ाएं
InputMethodService
.
इसके अलावा, आम तौर पर आपके पास "सेटिंग" बनाने का विकल्प होता है ऐसी गतिविधि जो IME सेवा को विकल्प पास करती है. आपने लोगों तक पहुंचाया मुफ़्त में
में सेटिंग यूज़र इंटरफ़ेस (यूआई) भी बताया जा सकता है. यह यूज़र इंटरफ़ेस (यूआई) सिस्टम सेटिंग के हिस्से के तौर पर दिखता है.
इस पेज पर इन विषयों के बारे में बताया गया है:
- IME का लाइफ़साइकल
- ऐप्लिकेशन मेनिफ़ेस्ट में IME कॉम्पोनेंट की जानकारी देना
- IME API
- IME यूज़र इंटरफ़ेस (यूआई) डिज़ाइन करना
- किसी IME से किसी ऐप्लिकेशन को टेक्स्ट भेजना
- IME के सब-टाइप के साथ काम करना
- आईएमई से जुड़ी अन्य ज़रूरी बातें
अगर आपने IME के साथ काम नहीं किया है, तो शुरुआती लेख पढ़ें स्क्रीन पर दिखने वाले इनपुट के तरीके चुनें.
IME लाइफ़साइकल
नीचे दिए गए डायग्राम में, IME के लाइफ़साइकल के बारे में बताया गया है:
![IME की लाइफ़ साइकल दिखाने वाली इमेज.](https://developer.android.com/static/resources/articles/images/inputmethod_lifecycle_image.png?authuser=9&hl=hi)
नीचे दिए सेक्शन में ऐसे IME से जुड़े यूज़र इंटरफ़ेस (यूआई) और कोड को लागू करने का तरीका बताया गया है जो इस लाइफ़साइकल को फ़ॉलो करता है.
मेनिफ़ेस्ट में IME कॉम्पोनेंट की जानकारी दें
Android सिस्टम में, IME एक ऐसा Android ऐप्लिकेशन है जिसमें एक खास IME सेवा होती है. कॉन्टेंट बनाने
ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में सेवा के बारे में जानकारी देनी होगी. इसके लिए ज़रूरी अनुमतियों का अनुरोध करना होगा. इसके अलावा,
ऐसा इंटेंट फ़िल्टर जो action.view.InputMethod
कार्रवाई से मेल खाता है और मेटाडेटा देता है
जो IME की विशेषताओं को परिभाषित करती है. इसके अलावा, ऐसा सेटिंग इंटरफ़ेस उपलब्ध कराने के लिए जिसकी मदद से,
उपयोगकर्ता IME के व्यवहार में बदलाव करता है, तो आप "सेटिंग" इस्तेमाल की जा सकने वाली गतिविधि
सिस्टम सेटिंग.
नीचे दिया गया स्निपेट किसी IME सेवा के बारे में बताता है. यह अनुमति का अनुरोध करता है
BIND_INPUT_METHOD
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
सेवा को IME को सिस्टम से कनेक्ट करने के लिए, कार्रवाई से मेल खाने वाला इंटेंट फ़िल्टर सेट अप करें
android.view.InputMethod
, और IME के लिए मेटाडेटा के बारे में बताता है:
<!-- Declares the input method service. --> <service android:name="FastInputIME" android:label="@string/fast_input_label" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod" /> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method" /> </service>
अगला स्निपेट, IME के लिए सेटिंग गतिविधि की जानकारी देता है. इसमें ऐसा इंटेंट फ़िल्टर है
ACTION_MAIN
वह
बताता है कि यह गतिविधि IME ऐप्लिकेशन का मुख्य एंट्री पॉइंट है:
<!-- Optional: an activity for controlling the IME settings. --> <activity android:name="FastInputIMESettings" android:label="@string/fast_input_settings"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity>
सीधे IME के यूज़र इंटरफ़ेस (यूआई) से भी उसकी सेटिंग को ऐक्सेस किया जा सकता है.
इनपुट का तरीका एपीआई
IME के लिए विशिष्ट क्लास यहां पाई जाती हैं
android.inputmethodservice
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
और
android.view.inputmethod
पैकेज. यह KeyEvent
क्लास है
यह ज़रूरी है.
IME का मुख्य हिस्सा एक सेवा कॉम्पोनेंट होता है. यह एक ऐसा वर्ग होता है जो
InputMethodService
. सामान्य सेवा लाइफ़साइकल को लागू करने के अलावा, यह
क्लास में आपके IME का यूज़र इंटरफ़ेस (यूआई) देने, उपयोगकर्ता के इनपुट को मैनेज करने, और
जिसमें फ़ोकस है. डिफ़ॉल्ट रूप से, InputMethodService
क्लास में
IME की स्थिति और दृश्यता को प्रबंधित करने और वर्तमान
इनपुट फ़ील्ड.
ये क्लास भी ज़रूरी हैं:
BaseInputConnection
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
कम्यूनिकेशन चैनल को
InputMethod
उस ऐप्लिकेशन पर वापस जाएं जिसे इनपुट मिल रहा है. आप इसका उपयोग कर्सर, टेक्स्ट बॉक्स में टेक्स्ट कमिट करें, और ऐप्लिकेशन में रॉ मुख्य इवेंट भेजें. ऐप्लिकेशन को बेस इंटरफ़ेस लागू करने के बजाय इस क्लास को बढ़ाना चाहिएInputConnection
. KeyboardView
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
View
का एक एक्सटेंशन जो कीबोर्ड रेंडर करता है और उपयोगकर्ता के इनपुट इवेंट का जवाब देता है. कीबोर्ड लेआउट का इंस्टेंसKeyboard
, जिसे आप किसी एक्सएमएल फ़ाइल में तय कर सकते हैं.
इनपुट का तरीका यूज़र इंटरफ़ेस (यूआई) डिज़ाइन करें
किसी IME के लिए दो मुख्य विज़ुअल एलिमेंट होते हैं: इनपुट व्यू और उम्मीदवारों के व्यू के तौर पर दिखेगा. आपको सिर्फ़ वे एलिमेंट लागू करने होंगे जो इनपुट का तरीका चुनें जिसे आपने डिज़ाइन किया है.
इनपुट व्यू
इनपुट व्यू वह यूज़र इंटरफ़ेस (यूआई) है जिसमें उपयोगकर्ता टेक्स्ट को कीक्लिक, हैंडराइटिंग या
हाथ के जेस्चर. पहली बार IME दिखाए जाने पर, सिस्टम
onCreateInputView()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
कॉलबैक. इस तरीके को लागू करने से, वह लेआउट बनाएं जिसे आप IME में दिखाना चाहते हैं
विंडो और सिस्टम को लेआउट वापस कर दें. नीचे दिया गया स्निपेट, लागू करने का एक उदाहरण दिखाता है
onCreateInputView()
तरीका:
Kotlin
override fun onCreateInputView(): View { return layoutInflater.inflate(R.layout.input, null).apply { if (this is MyKeyboardView) { setOnKeyboardActionListener(this@MyInputMethod) keyboard = latinKeyboard } } }
Java
@Override public View onCreateInputView() { MyKeyboardView inputView = (MyKeyboardView) getLayoutInflater().inflate(R.layout.input, null); inputView.setOnKeyboardActionListener(this); inputView.setKeyboard(latinKeyboard); return inputView; }
इस उदाहरण में, MyKeyboardView
Keyboard
रेंडर करने वाला KeyboardView
.
कैंडिडेट व्यू
उम्मीदवार का व्यू वह यूज़र इंटरफ़ेस (यूआई) है जहां IME, शब्दों में संभावित सुधार या सुझाव दिखाता है
जिसे उपयोगकर्ता चुनना चाहता है. IME लाइफ़साइकल में, सिस्टम कॉल
onCreateCandidatesView()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
जब यह कैंडिडेट व्यू दिखाने के लिए तैयार हो. इस तरीके को लागू करने में,
लेआउट, जो शब्दों के सुझाव दिखाता है या अगर आपको कुछ भी नहीं दिखाना है, तो यह शून्य दिखाएगा. शून्य
रिस्पॉन्स, डिफ़ॉल्ट तरीका होता है. इसलिए, अगर आपने अपनी वेबसाइट पर
सुझाव.
यूज़र इंटरफ़ेस (यूआई) के डिज़ाइन से जुड़ी ज़रूरी शर्तें
इस सेक्शन में, IME के लिए यूज़र इंटरफ़ेस (यूआई) के कुछ डिज़ाइन से जुड़ी ज़रूरी शर्तों के बारे में बताया गया है.
कई स्क्रीन साइज़ मैनेज कर सकते हैं
आपकी IME का यूज़र इंटरफ़ेस (यूआई) अलग-अलग स्क्रीन साइज़ के हिसाब से बड़ा होना चाहिए. साथ ही, यह भी ज़रूरी है कि ये दोनों लैंडस्केप हैंडल कर पाएं और पोर्ट्रेट ओरिएंटेशन (स्क्रीन की दिशा) तय करें. गैर-पूर्ण स्क्रीन IME मोड में, ऐप्स के लिए पर्याप्त स्थान छोड़ें टेक्स्ट फ़ील्ड और उससे जुड़ा कॉन्टेक्स्ट दिखाएं, ताकि स्क्रीन के आधे से ज़्यादा हिस्से का इस्तेमाल न किया जा सके IME. फ़ुलस्क्रीन IME मोड में, यह कोई समस्या नहीं है.
अलग-अलग तरह के इनपुट इस्तेमाल करना
Android टेक्स्ट फ़ील्ड की मदद से, कोई इनपुट टाइप सेट किया जा सकता है. जैसे, फ़्री फ़ॉर्म टेक्स्ट, नंबर, यूआरएल, ईमेल पते, और सर्च स्ट्रिंग. नया IME लागू करते समय, हर एक के इनपुट टाइप का पता लगाएं फ़ील्ड में डालें और इसके लिए सही इंटरफ़ेस उपलब्ध कराएं. हालांकि, आपको अपने IME को यह जांचकर कि उपयोगकर्ता इनपुट प्रकार के लिए मान्य टेक्स्ट दर्ज करता है या नहीं. यह कंपनी की ज़िम्मेदारी है वह ऐप्लिकेशन जो टेक्स्ट फ़ील्ड का मालिक है.
उदाहरण के लिए, यहां Android प्लैटफ़ॉर्म टेक्स्ट के लिए लैटिन IME का इंटरफ़ेस दिया गया है इनपुट:
![लैटिन IME पर टेक्स्ट इनपुट दिखाने वाली इमेज](https://developer.android.com/static/images/ui/text_input.png?authuser=9&hl=hi)
यहां Android प्लैटफ़ॉर्म के लिए लैटिन IME का इंटरफ़ेस दिया गया है न्यूमेरिक इनपुट:
![लैटिन IME में अंकों वाला इनपुट दिखाती हुई इमेज](https://developer.android.com/static/images/ui/numeric_input.png?authuser=9&hl=hi)
जब किसी इनपुट फ़ील्ड पर फ़ोकस मिलता है और आपका IME चालू होता है, तो सिस्टम कॉल करता है
onStartInputView()
,
पासिंग
EditorInfo
ऑब्जेक्ट
इसमें टेक्स्ट फ़ील्ड के इनपुट टाइप और अन्य एट्रिब्यूट के बारे में जानकारी शामिल होती है. इस ऑब्जेक्ट में,
यह
inputType
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
फ़ील्ड में टेक्स्ट फ़ील्ड का इनपुट टाइप शामिल होता है.
inputType
फ़ील्ड एक int
है, जिसमें कई
इनपुट टाइप की सेटिंग. टेक्स्ट फ़ील्ड के इनपुट टाइप के लिए इसकी जांच करने के लिए, कॉन्सटेंट को मास्क करें
TYPE_MASK_CLASS
,
इस तरह:
Kotlin
inputType and InputType.TYPE_MASK_CLASS
Java
inputType & InputType.TYPE_MASK_CLASS
इनपुट टाइप के बिट पैटर्न में, इनमें से कोई एक वैल्यू हो सकती है. जैसे:
TYPE_CLASS_NUMBER
- संख्या डालने के लिए टेक्स्ट फ़ील्ड. जैसा कि तीसरी इमेज में दिखाया गया है, लैटिन IME संख्या पैड इस प्रकार के फ़ील्ड के लिए.
TYPE_CLASS_DATETIME
- तारीख और समय डालने के लिए टेक्स्ट फ़ील्ड.
TYPE_CLASS_PHONE
- टेलीफ़ोन नंबर डालने के लिए टेक्स्ट फ़ील्ड.
TYPE_CLASS_TEXT
- इस्तेमाल किए जा सकने वाले वर्ण डालने के लिए टेक्स्ट फ़ील्ड.
इन कॉन्सटेंट के बारे में ज़्यादा जानकारी के लिए, रेफ़रंस दस्तावेज़ में
InputType
.
inputType
फ़ील्ड में ऐसे अन्य बिट हो सकते हैं जो टेक्स्ट फ़ील्ड के वैरिएंट के बारे में बताते हैं
टाइप करें, जैसे:
TYPE_TEXT_VARIATION_PASSWORD
- पासवर्ड डालने के लिए
TYPE_CLASS_TEXT
का वैरिएंट. इनपुट का तरीका दिखाता है असल टेक्स्ट के बजाय dingbats का इस्तेमाल करें. TYPE_TEXT_VARIATION_URI
- वेब यूआरएल और अन्य यूनिफ़ॉर्म संसाधन डालने के लिए
TYPE_CLASS_TEXT
का एक वैरिएंट आइडेंटिफ़ायर (यूआरआई). TYPE_TEXT_FLAG_AUTO_COMPLETE
- ऐप्लिकेशन का टेक्स्ट डालने के लिए
TYPE_CLASS_TEXT
का एक वैरिएंट किसी डिक्शनरी, खोज या अन्य सुविधा से अपने-आप पूरा होता है.
इन वैरिएंट की जांच करते समय, inputType
को सही कॉन्स्टेंट के साथ मास्क करें. कॉन्टेंट बनाने
InputType
के रेफ़रंस दस्तावेज़ों में, उपलब्ध मास्क कॉन्सटेंट दिए गए हैं.
ऐप्लिकेशन में मैसेज भेजें
जब उपयोगकर्ता आपके IME के साथ टेक्स्ट इनपुट करता है, तब अलग-अलग ऐप्लिकेशन को मैसेज भेजकर ऐप्लिकेशन को मैसेज भेजा जा सकता है
मुख्य इवेंट या ऐप्लिकेशन के टेक्स्ट फ़ील्ड में कर्सर के आस-पास के टेक्स्ट में बदलाव करके. दोनों ही मामलों में,
टेक्स्ट को डिलीवर करने के लिए, InputConnection
के इंस्टेंस का इस्तेमाल करें. यह इंस्टेंस पाने के लिए, कॉल करें
InputMethodService.getCurrentInputConnection()
.
कर्सर के आस-पास के टेक्स्ट में बदलाव करें
जब मौजूदा टेक्स्ट के बदलाव को मैनेज किया जा रहा हो, तो
BaseInputConnection
के बारे में यहां बताया गया है:
-
getTextBeforeCursor()
CharSequence
लौटाता है इसमें कर्सर की मौजूदा जगह से पहले, अनुरोध किए गए वर्णों की संख्या होती है.-
getTextAfterCursor()
- एक
CharSequence
देता है, जिसमें नीचे दिए गए अनुरोध किए गए वर्णों की संख्या होती है कर्सर की मौजूदा जगह. -
deleteSurroundingText()
- कर्सर की मौजूदा जगह से पहले और उसके बाद आने वाले वर्णों की तय संख्या मिटा देता है.
-
commitText()
- टेक्स्ट फ़ील्ड में
CharSequence
भेजता है और कर्सर की नई जगह सेट करता है.
उदाहरण के लिए, नीचे दिया गया स्निपेट दिखाता है कि कैसे "नमस्ते!" टेक्स्ट के साथ कर्सर:
Kotlin
currentInputConnection.also { ic: InputConnection -> ic.deleteSurroundingText(4, 0) ic.commitText("Hello", 1) ic.commitText("!", 1) }
Java
InputConnection ic = getCurrentInputConnection(); ic.deleteSurroundingText(4, 0); ic.commitText("Hello", 1); ic.commitText("!", 1);
कमिट करने से पहले टेक्स्ट लिखने में मदद करें
अगर आपका IME टेक्स्ट का अनुमान लगाता है या किसी ग्लिफ़ या शब्द को लिखने के लिए कई चरणों की ज़रूरत होती है, तो
उपयोगकर्ता की पुष्टि होने तक टेक्स्ट फ़ील्ड में चलाएं, और फिर आप आंशिक
पूरे टेक्स्ट के साथ कंपोज़िशन. आप
span ताकि आप उसे पास कर सकें
setComposingText()
.
इस स्निपेट में, टेक्स्ट फ़ील्ड में प्रोग्रेस दिखाने का तरीका बताया गया है:
Kotlin
currentInputConnection.also { ic: InputConnection -> ic.setComposingText("Composi", 1) ic.setComposingText("Composin", 1) ic.commitText("Composing ", 1) }
Java
InputConnection ic = getCurrentInputConnection(); ic.setComposingText("Composi", 1); ic.setComposingText("Composin", 1); ic.commitText("Composing ", 1);
हार्डवेयर के मुख्य इवेंट को रोकें
इनपुट के तरीके की विंडो में भले ही साफ़ तौर पर फ़ोकस न किया गया हो, लेकिन उसे हार्डवेयर के मुख्य इवेंट मिलते हैं और उन्हें इस्तेमाल कर सकता है या उन्हें ऐप्लिकेशन पर फ़ॉरवर्ड कर सकता है. उदाहरण के लिए, हो सकता है कि कंपोज़िशन के दौरान उम्मीदवार को चुनने के लिए अपने यूज़र इंटरफ़ेस (यूआई) में नेविगेट करने के लिए दिशा-निर्देशों वाले बटन का इस्तेमाल करें. यह भी हो सकता है कि इनपुट के तरीके से जनरेट होने वाले किसी भी डायलॉग को खारिज करने के लिए, आप बैक बटन को ट्रैप करना चाहें विंडो.
हार्डवेयर कुंजियां रोकने के लिए, इन्हें बदलें
onKeyDown()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
और
onKeyUp()
.
उन कुंजियों के लिए super()
तरीके को कॉल करें जिन्हें आपको खुद मैनेज नहीं करना है.
IME सब-टाइप बनाएं
उप-प्रकार की मदद से IME, IME के साथ काम करने वाले कई इनपुट मोड और भाषाएं दिखाता है. सब-टाइप यह कर सकता है ये चीज़ें दिखाते हैं:
- कोई स्थान, जैसे en_US या fr_FR
- इनपुट मोड, जैसे कि आवाज़, कीबोर्ड या हैंडराइटिंग
- IME के लिए खास अन्य इनपुट स्टाइल, फ़ॉर्म या प्रॉपर्टी, जैसे कि 10-key या QWERTY कीबोर्ड के लेआउट
मोड में कोई भी टेक्स्ट शामिल हो सकता है, जैसे कि "कीबोर्ड" या "आवाज़" शामिल करें. सब-टाइप भी कॉम्बिनेशन को बिना अनुमति के सार्वजनिक कर सकता है इनमें से.
सब-टाइप की जानकारी का इस्तेमाल IME स्विचर डायलॉग के लिए किया जाता है, जो सूचना बार में उपलब्ध होता है और IME सेटिंग के लिए भी उपलब्ध है. जानकारी से फ़्रेमवर्क, IME का एक खास सब-टाइप भी तैयार कर सकता है सकता है. IME बनाते समय, सब-टाइप का इस्तेमाल करें, क्योंकि इससे उपयोगकर्ता को डिवाइस की पहचान करने और अलग-अलग IME भाषाओं और मोड के बीच स्विच करें.
इनपुट के तरीके की किसी एक एक्सएमएल रिसॉर्स फ़ाइल में सब-टाइप तय करें. इसके लिए,
<subtype>
एलिमेंट. यह कोड स्निपेट दो सब-टाइप वाले IME के बारे में बताता है: a
यूएस अंग्रेज़ी स्थान-भाषा के लिए कीबोर्ड का सब-टाइप और फ़्रेंच भाषा के लिए दूसरा कीबोर्ड सब-टाइप
फ़्रांस की स्थानीय भाषा:
<input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.example.softkeyboard.Settings" android:icon="@drawable/ime_icon"> <subtype android:name="@string/display_name_english_keyboard_ime" android:icon="@drawable/subtype_icon_english_keyboard_ime" android:languageTag="en-US" android:imeSubtypeMode="keyboard" android:imeSubtypeExtraValue="somePrivateOption=true" /> <subtype android:name="@string/display_name_french_keyboard_ime" android:icon="@drawable/subtype_icon_french_keyboard_ime" android:languageTag="fr-FR" android:imeSubtypeMode="keyboard" android:imeSubtypeExtraValue="someVariable=30,someInternalOption=false" /> <subtype android:name="@string/display_name_german_keyboard_ime" ... /> </input-method>
यह पक्का करने के लिए कि आपके सब-टाइप को यूज़र इंटरफ़ेस (यूआई) में सही तरीके से लेबल किया गया है, `%s` का इस्तेमाल करके एक सब-टाइप लेबल पाएं. सब-टाइप के स्थान-भाषा के लेबल जैसा ही है. इसे अगले दो कोड स्निपेट में दिखाया जाएगा. कॉन्टेंट बनाने पहला स्निपेट, इनपुट के तरीके की एक्सएमएल फ़ाइल का एक हिस्सा दिखाता है:
<subtype android:label="@string/label_subtype_generic" android:imeSubtypeLocale="en_US" android:icon="@drawable/icon_en_us" android:imeSubtypeMode="keyboard" />
अगला स्निपेट, IME की strings.xml
फ़ाइल का हिस्सा होता है. स्ट्रिंग रिसॉर्स
label_subtype_generic
, जिसका इस्तेमाल इनपुट के तरीके के यूज़र इंटरफ़ेस (यूआई) में, वैल्यू को सेट करने के लिए किया जाता है
सब-टाइप का लेबल, नीचे दिए गए तरीके से परिभाषित किया गया है:
<string name="label_subtype_generic">%s</string>
इस सेटिंग की वजह से सब-टाइप का डिसप्ले नेम, स्थान-भाषा की सेटिंग से मेल खाता है. उदाहरण के लिए, किसी भी अंग्रेज़ी भाषा, डिसप्ले नेम है "अंग्रेज़ी (संयुक्त राज्य अमेरिका)".
सूचना बार से IME के सब-टाइप चुनें
Android सिस्टम, उन सभी सब-टाइप को मैनेज करता है जिन्हें किसी भी IME में दिखाया जाता है. IME के सब-टाइप को मोड ऐसा माना जाता है उनका किस IME का हिस्सा है. उपयोगकर्ता सूचना बार या सेटिंग ऐप्लिकेशन से उपलब्ध IME उप-प्रकारों का मेनू, जैसा कि नीचे दिए गए चित्र में दिखाया गया है:
![भाषाएं और चेहरे की जानकारी दिखाने वाली इमेज सिस्टम मेन्यू डालें](https://developer.android.com/static/images/ui/languages_and_input.png?authuser=9&hl=hi)
सिस्टम सेटिंग में जाकर, IME के सब-टाइप चुनें
उपयोगकर्ता यह भी नियंत्रित कर सकता है कि भाषा और इनपुट सेटिंग पैनल ऐसा करने के लिए:
![भाषाएं चुनने का मेन्यू दिखाने वाली इमेज](https://developer.android.com/static/images/ui/languages.png?authuser=9&hl=hi)
IME के सब-टाइप के बीच स्विच करें
आप एक स्विचिंग कुंजी देकर उपयोगकर्ताओं को IME उप-प्रकारों के बीच आसानी से स्विच करने की सुविधा दे सकते हैं, जैसे ग्लोब के आकार का भाषा आइकॉन. इससे कीबोर्ड को ज़्यादा आसानी से इस्तेमाल किया जा सकता है उपयोगकर्ता के लिए. इस स्विच को चालू करने के लिए, नीचे दिया गया तरीका अपनाएं:
- इनपुट के तरीके की एक्सएमएल में,
supportsSwitchingToNextInputMethod = "true"
का एलान करें रिसॉर्स फ़ाइलें. आपका एलान, यहां दिए गए कोड स्निपेट की तरह दिखना चाहिए:<input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="com.example.softkeyboard.Settings" android:icon="@drawable/ime_icon" android:supportsSwitchingToNextInputMethod="true">
- कॉल करें
shouldOfferSwitchingToNextInputMethod()
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तरीका. - अगर तरीका सही है, तो एक स्विचिंग बटन दिखाएं.
- जब उपयोगकर्ता स्विचिंग बटन पर टैप करता है, तो
switchToNextInputMethod()
, गलत पास करना. वैल्यू का 'गलत' होने पर, सिस्टम सभी सब-टाइप के साथ एक जैसा व्यवहार करता है, भले ही वे किस IME से संबंधित हैं. 'सही' सेट करने के लिए, सिस्टम को मौजूदा IME.
IME के बारे में ज़रूरी बातें
अपना IME लागू करते समय, इन बातों का ध्यान रखें:
- उपयोगकर्ताओं को सीधे IME के यूज़र इंटरफ़ेस (यूआई) से विकल्प सेट करने का तरीका बताएं.
- उपयोगकर्ताओं को इनपुट का तरीका यूज़र इंटरफ़ेस (यूआई) से सीधे किसी दूसरे IME पर स्विच करने का तरीका बताएं, क्योंकि डिवाइस पर एक से ज़्यादा IME इंस्टॉल किए जा सकते हैं.
- IME का यूज़र इंटरफ़ेस (यूआई) तुरंत देखें. किसी भी बड़े संसाधन को ज़रूरत के हिसाब से पहले से लोड या लोड करें, ताकि लोग टेक्स्ट फ़ील्ड पर टैप करते ही IME देखें. बाद के लिए कैश रिसॉर्स और व्यू इनपुट के तरीके को शुरू करना.
- इनपुट पद्धति विंडो के छिपे होने के तुरंत बाद, बड़ी मेमोरी का आवंटन रिलीज़ करें, इसलिए जिसे चलाने के लिए ऐप्लिकेशन में काफ़ी मेमोरी है. संसाधनों को रिलीज़ करने के लिए, देरी से दिखने वाले मैसेज का इस्तेमाल करें अगर IME कुछ सेकंड के लिए छिपा हुआ रहता है.
- पक्का करें कि उपयोगकर्ता उस भाषा या स्थान-भाषा के लिए ज़्यादा से ज़्यादा वर्ण डाल सकें IME से संबद्ध होती है. उपयोगकर्ता आपके पासवर्ड या उपयोगकर्ता नामों में विराम चिह्न का इस्तेमाल कर सकते हैं. इसलिए, आपके IME उपयोगकर्ताओं को पासवर्ड डालने और डिवाइस.