इनपुट का तरीका बनाएं

इनपुट के तरीके का संपादक (आईएमई), एक यूज़र कंट्रोल है. इसकी मदद से, उपयोगकर्ता टेक्स्ट डाल सकते हैं. Android, एक्सटेंसिबल इनपुट-मेथ फ़्रेमवर्क, जो ऐप्लिकेशन को उपयोगकर्ताओं को इनपुट के अन्य तरीके उपलब्ध कराने देता है. जैसे कि ऑन-स्क्रीन कीबोर्ड या स्पीच इनपुट. IME इंस्टॉल करने के बाद, उपयोगकर्ता सिस्टम सेटिंग में जाकर, उनमें से किसी एक को चुन सकता है और पूरे सिस्टम में उसका इस्तेमाल कर सकता है. एक बार में सिर्फ़ एक IME चालू किया जा सकता है.

Android सिस्टम में IME जोड़ने के लिए, ऐसा Android ऐप्लिकेशन बनाएं जिसमें किसी ऐसी क्लास हो बढ़ाएं InputMethodService. इसके अलावा, आम तौर पर आपके पास "सेटिंग" बनाने का विकल्प होता है ऐसी गतिविधि जो IME सेवा को विकल्प पास करती है. आपके पास, सेटिंग का ऐसा यूज़र इंटरफ़ेस (यूआई) तय करने का विकल्प भी है जो सिस्टम सेटिंग के हिस्से के तौर पर दिखता है.

इस पेज पर ये विषय शामिल हैं:

अगर आपने पहले कभी IME का इस्तेमाल नहीं किया है, तो स्क्रीन पर इनपुट करने के तरीके वाला शुरुआती लेख पढ़ें.

आईएमई का लाइफ़साइकल

इस डायग्राम में, IME के लाइफ़साइकल के बारे में बताया गया है:

IME के लाइफ़ साइकल को दिखाने वाली इमेज.
पहली इमेज. किसी IME की लाइफ़साइकल.

नीचे दिए गए सेक्शन में, इस लाइफ़साइकल का पालन करने वाले IME से जुड़े यूज़र इंटरफ़ेस (यूआई) और कोड को लागू करने का तरीका बताया गया है.

मेनिफ़ेस्ट में IME कॉम्पोनेंट की जानकारी दें

Android सिस्टम में, IME एक Android ऐप्लिकेशन है. इसमें एक खास IME सेवा होती है. ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में, सेवा के बारे में जानकारी होनी चाहिए. साथ ही, इसमें ज़रूरी अनुमतियों का अनुरोध किया जाना चाहिए, कार्रवाई action.view.InputMethod से मैच करने वाला इंटेंट फ़िल्टर दिया जाना चाहिए, और 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 की सेटिंग का ऐक्सेस दिया जा सकता है.

इनपुट का तरीका एपीआई

IME के लिए खास तौर पर बनाई गई क्लास, android.inputmethodservice और android.view.inputmethod पैकेज में मिलती हैं. यह KeyEvent क्लास है यह ज़रूरी है.

IME का मुख्य हिस्सा एक सेवा कॉम्पोनेंट होता है. यह एक ऐसा वर्ग होता है जो InputMethodService. इस क्लास में, सेवा के सामान्य लाइफ़साइकल को लागू करने के अलावा, IME का यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराने, उपयोगकर्ता के इनपुट को मैनेज करने, और फ़ोकस किए गए फ़ील्ड में टेक्स्ट डिलीवर करने के लिए कॉलबैक भी होते हैं. डिफ़ॉल्ट रूप से, InputMethodService क्लास IME की स्थिति और उसे दिखने से जुड़ी सेटिंग को मैनेज करने के साथ-साथ, मौजूदा इनपुट फ़ील्ड के साथ कम्यूनिकेट करने के लिए ज़्यादातर सुविधाएं उपलब्ध कराती है.

ये क्लास भी अहम हैं:

BaseInputConnection
InputMethod से, इनपुट पाने वाले ऐप्लिकेशन के लिए, कम्यूनिकेशन चैनल तय करता है. आप इसका उपयोग कर्सर, टेक्स्ट बॉक्स में टेक्स्ट कमिट करें, और ऐप्लिकेशन में रॉ मुख्य इवेंट भेजें. ऐप्लिकेशन को बुनियादी इंटरफ़ेस InputConnection लागू करने के बजाय, इस क्लास को एक्सटेंड करना होगा.
KeyboardView
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है View का एक एक्सटेंशन जो कीबोर्ड रेंडर करता है और उपयोगकर्ता के इनपुट इवेंट का जवाब देता है. कीबोर्ड लेआउट, Keyboard के किसी उदाहरण से तय होता है, जिसे एक्सएमएल फ़ाइल में तय किया जा सकता है.

इनपुट का तरीका यूज़र इंटरफ़ेस (यूआई) डिज़ाइन करना

किसी आईएमई के लिए दो मुख्य विज़ुअल एलिमेंट होते हैं: इनपुट व्यू और कैंडिडेट व्यू. आपको सिर्फ़ वे एलिमेंट लागू करने होंगे जो का विकल्प चुनें.

इनपुट व्यू

इनपुट व्यू वह यूज़र इंटरफ़ेस (यूआई) है जिसमें उपयोगकर्ता टेक्स्ट को कीक्लिक, हैंडराइटिंग या हाथ के जेस्चर. जब IME पहली बार दिखता है, तो सिस्टम onCreateInputView() callback को कॉल करता है. इस तरीके को लागू करके, वह लेआउट बनाएं जिसे आप 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, KeyboardView के कस्टम तरीके से लागू होने का एक उदाहरण है, जो Keyboard को रेंडर करता है.

उम्मीदवारों का व्यू

उम्मीदवार का व्यू वह यूज़र इंटरफ़ेस (यूआई) है जहां IME, शब्दों में संभावित सुधार या सुझाव दिखाता है जिसे उपयोगकर्ता चुनना चाहता है. IME लाइफ़साइकल में, सिस्टम onCreateCandidatesView() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है जब वह उम्मीदवार दृश्य दिखाने के लिए तैयार हो. इस तरीके को लागू करने में, किसी लेआउट, जो शब्दों के सुझाव दिखाता है या अगर आपको कुछ भी नहीं दिखाना है, तो यह शून्य दिखाएगा. कोई जवाब न देना, डिफ़ॉल्ट तौर पर लागू होता है. इसलिए, अगर आपको सुझाव नहीं देने हैं, तो आपको इसे लागू करने की ज़रूरत नहीं है.

यूज़र इंटरफ़ेस (यूआई) के डिज़ाइन से जुड़ी बातें

इस सेक्शन में, IME के लिए यूज़र इंटरफ़ेस (यूआई) के कुछ डिज़ाइन से जुड़ी ज़रूरी शर्तों के बारे में बताया गया है.

कई स्क्रीन साइज़ इस्तेमाल कर सकते हैं

आपके आईएमई का यूज़र इंटरफ़ेस (यूआई), अलग-अलग स्क्रीन साइज़ के हिसाब से स्केल होना चाहिए. साथ ही, यह लैंडस्केप और पोर्ट्रेट, दोनों ओरिएंटेशन के साथ काम करना चाहिए. गैर-पूर्ण स्क्रीन IME मोड में, ऐप्स के लिए पर्याप्त स्थान छोड़ें टेक्स्ट फ़ील्ड और उससे जुड़ा कॉन्टेक्स्ट दिखाएं, ताकि स्क्रीन के आधे से ज़्यादा हिस्से का इस्तेमाल न किया जा सके IME. फ़ुलस्क्रीन IME मोड में, यह समस्या नहीं होती.

अलग-अलग तरह के इनपुट इस्तेमाल करना

Android टेक्स्ट फ़ील्ड की मदद से, कोई इनपुट टाइप सेट किया जा सकता है. जैसे, फ़्री फ़ॉर्म टेक्स्ट, नंबर, यूआरएल, ईमेल पते, और सर्च स्ट्रिंग. नया IME लागू करते समय, हर एक के इनपुट टाइप का पता लगाएं फ़ील्ड में डालें और इसके लिए सही इंटरफ़ेस उपलब्ध कराएं. हालांकि, यह जांचने के लिए कि उपयोगकर्ता ने इनपुट टाइप के लिए मान्य टेक्स्ट डाला है या नहीं, आपको अपना आईएमई सेट अप करने की ज़रूरत नहीं है. यह कंपनी की ज़िम्मेदारी है वह ऐप्लिकेशन जो टेक्स्ट फ़ील्ड का मालिक है.

उदाहरण के लिए, यहां Android प्लैटफ़ॉर्म पर टेक्स्ट डालने के लिए, लैटिन IME का इंटरफ़ेस दिया गया है:

लैटिन IME पर टेक्स्ट इनपुट दिखाने वाली इमेज
दूसरी इमेज. लैटिन IME टेक्स्ट इनपुट.

यहां Android प्लैटफ़ॉर्म के लिए लैटिन IME का इंटरफ़ेस दिया गया है न्यूमेरिक इनपुट:

लैटिन भाषा के लिए उपलब्ध आईएमई (इनपुट मैनेजमेंट सिस्टम) पर अंकों का इनपुट दिखाने वाली इमेज
तीसरी इमेज. लैटिन IME अंकों वाला इनपुट.

जब किसी इनपुट फ़ील्ड पर फ़ोकस जाता है और आपका 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 का एक वैरिएंट. इनपुट का तरीका, असल टेक्स्ट के बजाय डिंगबेट दिखाता है.
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);

कॉन्फ़िगरेशन लागू करने से पहले, टेक्स्ट लिखने की सुविधा

अगर आपका आईएमई टेक्स्ट का अनुमान लगाता है या कोई ग्लिफ़ या शब्द लिखने के लिए कई चरणों की ज़रूरत होती है, तो टेक्स्ट फ़ील्ड में प्रोग्रेस दिखाएं. ऐसा तब तक करें, जब तक उपयोगकर्ता शब्द को स्वीकार नहीं कर लेता. इसके बाद, अधूरे कॉम्पोज़िशन को पूरे टेक्स्ट से बदलें. टेक्स्ट को setComposingText() में पास करते समय, उसमें span जोड़कर, उसे खास तरीके से दिखाया जा सकता है.

नीचे दिए गए स्निपेट में, टेक्स्ट फ़ील्ड में प्रोग्रेस दिखाने का तरीका बताया गया है:

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-की या QWERTY कीबोर्ड लेआउट

मोड में कोई भी टेक्स्ट शामिल हो सकता है, जैसे कि "कीबोर्ड" या "आवाज़" शामिल करें. सब-टाइप में इनमें से किसी एक या सभी एट्रिब्यूट का कॉम्बिनेशन भी हो सकता है.

सब-टाइप की जानकारी का इस्तेमाल IME स्विचर डायलॉग के लिए किया जाता है, जो सूचना बार में उपलब्ध होता है और IME सेटिंग के लिए भी उपलब्ध है. जानकारी से फ़्रेमवर्क, IME का एक खास सब-टाइप भी तैयार कर सकता है सकता है. IME बनाते समय, सब-टाइप का इस्तेमाल करें, क्योंकि इससे उपयोगकर्ता को डिवाइस की पहचान करने और अलग-अलग IME भाषाओं और मोड के बीच स्विच करें.

<subtype> एलिमेंट का इस्तेमाल करके, इनपुट के किसी तरीके की एक्सएमएल रिसॉर्स फ़ाइल में सब-टाइप तय करें. यहां दिए गए कोड स्निपेट में, दो सब-टाइप वाले IME के बारे में बताया गया है: अमेरिका की अंग्रेज़ी भाषा के लिए एक कीबोर्ड सब-टाइप और फ़्रांस की फ़्रेंच भाषा के लिए एक और कीबोर्ड सब-टाइप:

<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 उप-प्रकारों का मेनू, जैसा कि नीचे दिए गए चित्र में दिखाया गया है:

भाषाएं और चेहरे की जानकारी दिखाने वाली इमेज सिस्टम मेन्यू डालें
चौथी इमेज. भाषाएं और इनपुट सिस्टम मेन्यू.

सिस्टम सेटिंग में जाकर, IME के सब-टाइप चुनें

उपयोगकर्ता, सिस्टम सेटिंग में भाषा और इनपुट सेटिंग पैनल में जाकर, यह भी कंट्रोल कर सकता है कि सब-टाइप का इस्तेमाल कैसे किया जाए:

भाषा चुनने के लिए मेन्यू दिखाने वाली इमेज
पांचवीं इमेज. भाषाएं सिस्टम मेन्यू

IME के सब-टाइप के बीच स्विच करना

आप एक स्विचिंग कुंजी देकर उपयोगकर्ताओं को IME उप-प्रकारों के बीच आसानी से स्विच करने की सुविधा दे सकते हैं, जैसे ग्लोब के आकार का भाषा आइकॉन. इससे कीबोर्ड को इस्तेमाल करना आसान हो जाता है और उपयोगकर्ता को भी आसानी होती है. इस स्विच को चालू करने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. इनपुट के तरीके की एक्सएमएल रिसॉर्स फ़ाइलों में 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">
  2. कॉल करें shouldOfferSwitchingToNextInputMethod() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तरीका.
  3. अगर तरीका सही है, तो एक स्विचिंग बटन दिखाएं.
  4. जब उपयोगकर्ता स्विचिंग बटन पर टैप करता है, तो switchToNextInputMethod(), गलत पास करना. 'गलत' वैल्यू से सिस्टम को यह पता चलता है कि सभी सब-टाइप को एक जैसा व्यवहार करना है, फिर चाहे वे किसी भी IME से जुड़े हों. 'सही' सेट करने के लिए, सिस्टम को मौजूदा IME.

IME से जुड़ी सामान्य बातें

IME लागू करते समय, इन बातों का ध्यान रखें:

  • उपयोगकर्ताओं को सीधे IME के यूज़र इंटरफ़ेस (यूआई) से विकल्प सेट करने का तरीका बताएं.
  • उपयोगकर्ताओं को इनपुट का तरीका यूज़र इंटरफ़ेस (यूआई) से सीधे किसी दूसरे IME पर स्विच करने का तरीका बताएं, क्योंकि डिवाइस पर एक से ज़्यादा IME इंस्टॉल किए जा सकते हैं.
  • IME का यूज़र इंटरफ़ेस (यूआई) तुरंत दिखाएं. बड़े संसाधनों को पहले से लोड करें या मांग पर लोड करें, ताकि उपयोगकर्ताओं को टेक्स्ट फ़ील्ड पर टैप करते ही IME दिखे. बाद के लिए कैश रिसॉर्स और व्यू इनपुट के तरीके को शुरू करना.
  • इनपुट पद्धति विंडो के छिपे होने के तुरंत बाद, बड़ी मेमोरी का आवंटन रिलीज़ करें, इसलिए जिसे चलाने के लिए ऐप्लिकेशन में काफ़ी मेमोरी है. संसाधनों को रिलीज़ करने के लिए, देर से दिखने वाले मैसेज का इस्तेमाल करें अगर IME कुछ सेकंड के लिए छिपा हुआ रहता है.
  • पक्का करें कि उपयोगकर्ता, भाषा या स्थान-भाषा के लिए ज़्यादा से ज़्यादा वर्ण डाल सकें IME से संबद्ध होती है. उपयोगकर्ता आपके पासवर्ड या उपयोगकर्ता नामों में विराम चिह्न का इस्तेमाल कर सकते हैं. इसलिए, आपके IME उपयोगकर्ताओं को पासवर्ड डालने और डिवाइस.