मॉडर्न इमोजी इस्तेमाल करें

Compose को आज़माएं
Android के लिए, Jetpack Compose को यूज़र इंटरफ़ेस (यूआई) टूलकिट के तौर पर इस्तेमाल करने का सुझाव दिया जाता है. Compose में इमोजी इस्तेमाल करने का तरीका जानें.

इमोजी के स्टैंडर्ड सेट को हर साल यूनिकोड अपडेट करता है. ऐसा इसलिए, क्योंकि सभी तरह के ऐप्लिकेशन के लिए इमोजी का इस्तेमाल तेज़ी से बढ़ रहा है.

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

Android के वर्शन 11 (एपीआई लेवल 30) और इससे पहले के वर्शन पर, इमोजी फ़ॉन्ट को अपडेट नहीं किया जा सकता. इसलिए, इन वर्शन पर इमोजी दिखाने वाले ऐप्लिकेशन को मैन्युअल तरीके से अपडेट करना होगा.

यहां मॉडर्न इमोजी के उदाहरण दिए गए हैं.

उदाहरण वर्शन
🫩 🪉 🇨🇶 16.0 (सितंबर 2024)
🐦‍🔥 🧑‍🧑‍🧒‍🧒 👩🏽‍🦽‍➡️ 🇲🇶 15.1 (सितंबर 2023)
🩷 🫸🏼 🐦‍⬛ 15.0 (सितंबर 2022)
🫠 🫱🏼‍🫲🏿 🫰🏽 14.0 (सितंबर 2021)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 13.1 (सितंबर 2020)
🥲 🥷🏿 🐻‍❄️ 13.0 (मार्च 2020)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 12.1 (अक्टूबर 2019)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 12.0 (फ़रवरी 2019)

androidx.emoji2:emoji2 लाइब्रेरी, Android के पुराने वर्शन के साथ काम करने की सुविधा को आसान बनाती है. emoji2 लाइब्रेरी, AppCompat लाइब्रेरी की डिपेंडेंसी है. इसे काम करने के लिए, किसी और कॉन्फ़िगरेशन की ज़रूरत नहीं होती.

Compose में इमोजी इस्तेमाल करने की सुविधा

मार्च 2023 के बीओएम (Compose UI 1.4) में, इमोजी के नए वर्शन के लिए सहायता उपलब्ध है. इसमें Android के पुराने वर्शन के साथ बैकवर्ड कंपैटिबिलिटी भी शामिल है. यह सुविधा, एपीआई 21 तक के वर्शन के साथ काम करती है. इस पेज पर, व्यू सिस्टम में नए इमोजी कॉन्फ़िगर करने का तरीका बताया गया है. ज़्यादा जानकारी के लिए, लिखते समय इमोजी का इस्तेमाल करना पेज देखें.

ज़रूरी शर्तें

यह पुष्टि करने के लिए कि आपका ऐप्लिकेशन नए इमोजी को सही तरीके से दिखाता है, इसे Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन पर काम करने वाले डिवाइस पर लॉन्च करें. इस पेज पर, आधुनिक इमोजी शामिल हैं. इन्हें टेस्टिंग के लिए दिखाया जा सकता है.

नए इमोजी के लिए AppCompat का इस्तेमाल करना

AppCompat 1.4 में इमोजी इस्तेमाल करने की सुविधा शामिल है.

इमोजी के लिए AppCompat का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. देखें कि आपका मॉड्यूल, AppCompat लाइब्रेरी के 1.4.0-alpha01 या इसके बाद के वर्शन पर निर्भर हो.

    build.gradle
    
    // Ensure version is 1.4.0-alpha01 or higher.
    implementation "androidx.appcompat:appcompat.$appcompatVersion"
    
  2. पक्का करें कि टेक्स्ट दिखाने वाली सभी गतिविधियां, AppCompatActivity क्लास को बढ़ाएं.

    Kotlin

    MyActivity.kt
    
    class MyActivity: AppCompatActivity {
    ...
    }

    Java

    MyActivity.java
    
    class MyActivity extends AppCompatActivity {
    ...
    }
  3. Android 10 या इससे पहले के वर्शन पर काम करने वाले डिवाइस पर अपना ऐप्लिकेशन लॉन्च करके, इंटिग्रेशन की जांच करें. साथ ही, यहां दी गई टेस्ट स्ट्रिंग दिखाएं. पक्का करें कि सभी वर्ण सही तरीके से रेंडर हो रहे हों.

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

आपका ऐप्लिकेशन, उन सभी डिवाइसों पर अपने-आप पुराने वर्शन के साथ काम करने वाले इमोजी दिखाता है जो emoji2 के साथ काम करने वाले फ़ॉन्ट डाउनलोड करने की सुविधा देते हैं. जैसे, Google Play services के साथ काम करने वाले डिवाइस.

अगर आपका ऐप्लिकेशन AppCompat का इस्तेमाल कर रहा है, लेकिन उसमें टोफ़ू (☐) दिख रहा है

कुछ मामलों में, AppCompat लाइब्रेरी जोड़ने के बावजूद, आपका ऐप्लिकेशन सही इमोजी के बजाय टोफ़ू दिखा सकता है. इसकी संभावित वजहें और समाधान यहां दिए गए हैं.

आपने हाल ही में फ़्लैश किए गए डिवाइस या नए एम्युलेटर पर ऐप्लिकेशन चलाया हो

ऐप्लिकेशन के Google Play services का डेटा मिटाएं, ताकि स्टार्टअप के दौरान फ़ॉन्ट की कैश मेमोरी में सेव होने की समस्या ठीक हो सके. आम तौर पर, इससे कुछ घंटों में समस्या ठीक हो जाती है.

ऐप्लिकेशन का डेटा मिटाने के लिए, यह तरीका अपनाएं:

  1. Android डिवाइस पर, सेटिंग खोलें.

  2. ऐप्लिकेशन और सूचनाएं पर टैप करें.

  3. सभी ऐप्लिकेशन देखें या ऐप्लिकेशन की जानकारी पर टैप करें.

  4. ऐप्लिकेशन की सूची में स्क्रोल करें और Google Play services पर टैप करें.

  5. स्टोरेज और कैश मेमोरी पर टैप करें.

  6. कैश मेमोरी मिटाएं पर टैप करें.

आपका ऐप्लिकेशन, AppCompat की टेक्स्ट से जुड़ी क्लास का इस्तेमाल नहीं कर रहा है

ऐसा तब हो सकता है, जब आपने AppCompatActivity को नहीं बढ़ाया हो या आपने कोड में कोई व्यू इंस्टैंटिएट किया हो, जैसे कि TextView. इन बातों की जांच करें:

  • यह गतिविधि AppCompatActivity तक चलती है.
  • अगर कोड में व्यू बनाया जा रहा है, तो सही AppCompat सबक्लास का इस्तेमाल करें.

एक्सएमएल को बड़ा करते समय, TextView की जगह AppCompatActivity अपने-आप बड़ा हो जाता है. इसलिए, आपको अपने एक्सएमएल को अपडेट करने की ज़रूरत नहीं है.AppCompatTextView

टेस्ट फ़ोन में डाउनलोड किए जा सकने वाले फ़ॉन्ट काम नहीं करते

पुष्टि करें कि DefaultEmojiCompatConfig.create एक नॉन-नल कॉन्फ़िगरेशन दिखाता है.

एपीआई लेवल के पुराने वर्शन वाले किसी एम्युलेटर ने Google Play services को अपग्रेड नहीं किया है

अगर पहले के एपीआई लेवल पर इम्यूलेटर का इस्तेमाल किया जा रहा है, तो आपको emoji2 के लिए बंडल की गई Google Play services को अपडेट करना पड़ सकता है, ताकि फ़ॉन्ट उपलब्ध कराने वाली कंपनी का पता चल सके. इसके लिए, एम्युलेटर पर Google Play Store में लॉग इन करें.

यह पुष्टि करने के लिए कि आपके डिवाइस पर सही वर्शन इंस्टॉल है, यह तरीका अपनाएं:

  1. यह कमांड चलाएं:

    adb shell dumpsys package com.google.android.gms | grep version
    
  2. देखें कि versionCode की वैल्यू, 211200000 से ज़्यादा हो.

AppCompat के बिना इमोजी की सुविधा

अगर आपका ऐप्लिकेशन AppCompat को शामिल नहीं कर सकता, तो वह सीधे emoji2 का इस्तेमाल कर सकता है. इसके लिए ज़्यादा काम करना पड़ता है. इसलिए, इस तरीके का इस्तेमाल सिर्फ़ तब करें, जब आपका ऐप्लिकेशन AppCompat का इस्तेमाल नहीं कर सकता.

AppCompat लाइब्रेरी के बिना इमोजी इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. अपने ऐप्लिकेशन की build.gradle फ़ाइल में, emoji2 और emoji2-views को शामिल करें.

    build.gradle
    
    def emojiVersion = "1.0.0-alpha03"
    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-views:$emojiVersion"
    

    emoji2-views मॉड्यूल, TextView, Button, और EditText के सबक्लास उपलब्ध कराता है. ये सबक्लास, EmojiCompat को लागू करते हैं. इसका इस्तेमाल ऐसे ऐप्लिकेशन में न करें जिसमें AppCompat शामिल हो, क्योंकि इसमें पहले से ही EmojiCompat लागू किया गया है.

  2. एक्सएमएल और कोड में, जहां भी TextView, EditText या Button का इस्तेमाल किया गया है वहां EmojiTextView, EmojiEditText या EmojiButton का इस्तेमाल करें.

    activity_main.xml
    
    <androidx.emoji2.widget.EmojiTextView ... />
    <androidx.emoji2.widget.EmojiEditText ... />
    <androidx.emoji2.widget.EmojiButton ... />
    

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

  3. इंटिग्रेशन की जांच करने के लिए, अपने ऐप्लिकेशन को Android 11 या इससे पहले के वर्शन वाले डिवाइस पर लॉन्च करें. साथ ही, यहां दी गई टेस्ट स्ट्रिंग दिखाएं. पक्का करें कि सभी वर्ण सही तरीके से रेंडर हो रहे हों.

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

विजेट के बिना EmojiCompat का इस्तेमाल करना

EmojiCompat, सही इमेज रेंडर करने के लिए EmojiSpan का इस्तेमाल करता है. इसलिए, इसे दिए गए किसी भी CharSequence ऑब्जेक्ट को EmojiSpan ऑब्जेक्ट वाले Spanned ऑब्जेक्ट में बदलना होगा. EmojiCompat क्लास, process() मेथड उपलब्ध कराती है. इसका इस्तेमाल CharSequences को Spanned इंस्टेंस में बदलने के लिए किया जाता है. इस तरीके का इस्तेमाल करके, बैकग्राउंड में process() को कॉल किया जा सकता है और नतीजों को कैश मेमोरी में सेव किया जा सकता है. इससे आपके ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है.

Kotlin

val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")

Java

CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");

इनपुट के तरीके के संपादकों के लिए EmojiCompat का इस्तेमाल करना

EmojiCompat क्लास की मदद से, कीबोर्ड उन इमोजी को रेंडर कर सकते हैं जिन्हें ऐप्लिकेशन इस्तेमाल कर रहा है. इनपुट के तरीके के एडिटर (आईएमई), getEmojiMatch() तरीके का इस्तेमाल करके यह जांच कर सकते हैं कि EmojiCompat का कोई इंस्टेंस, इमोजी रेंडर कर सकता है या नहीं. यह तरीका, इमोजी का CharSequence लेता है. अगर EmojiCompat इमोजी का पता लगा सकता है और उसे रेंडर कर सकता है, तो यह true दिखाता है.

कीबोर्ड, EmojiCompat के उस वर्शन की भी जांच कर सकता है जिसे ऐप्लिकेशन इस्तेमाल करता है. इससे यह तय किया जा सकता है कि पैलेट में कौनसा इमोजी रेंडर करना है. अगर कीबोर्ड का वर्शन उपलब्ध है, तो उसे देखने के लिए कीबोर्ड, EditorInfo.extras बंडल में मौजूद इन कुंजियों को खोज सकता है:

  • EDITOR_INFO_METAVERSION_KEY: यह इमोजी के मेटाडेटा के उस वर्शन को दिखाता है जिसका इस्तेमाल ऐप्लिकेशन करता है. अगर यह कुंजी मौजूद नहीं है, तो इसका मतलब है कि ऐप्लिकेशन, EmojiCompat का इस्तेमाल नहीं कर रहा है.
  • EDITOR_INFO_REPLACE_ALL_KEY: अगर कुंजी मौजूद है और उसे true पर सेट किया गया है, तो ऐप्लिकेशन सभी इमोजी को बदलने के लिए EmojiCompat को कॉन्फ़िगर करता है. भले ही, वे सिस्टम में मौजूद हों.

EmojiCompat के इंस्टेंस को कॉन्फ़िगर करने के तरीके के बारे में ज़्यादा जानें.

कस्टम व्यू में इमोजी का इस्तेमाल करना

अगर आपके ऐप्लिकेशन में कस्टम व्यू हैं, जो TextView की डायरेक्ट या इनडायरेक्ट सबक्लास हैं—उदाहरण के लिए, Button, Switch या EditText—और वे व्यू, उपयोगकर्ता का बनाया गया कॉन्टेंट दिखा सकते हैं, तो उन सभी को EmojiCompat लागू करना होगा.

यह प्रोसेस इस बात पर निर्भर करती है कि आपका ऐप्लिकेशन AppCompat लाइब्रेरी का इस्तेमाल करता है या नहीं.

AppCompat का इस्तेमाल करने वाले ऐप्लिकेशन के लिए कस्टम व्यू जोड़ना

अगर आपका ऐप्लिकेशन AppCompat का इस्तेमाल करता है, तो प्लैटफ़ॉर्म लागू करने के बजाय AppCompat लागू करने की सुविधा को बढ़ाएं. AppCompat में व्यू बढ़ाने के तरीके के बारे में जानने के लिए, इस टेबल को गाइड के तौर पर इस्तेमाल करें:

बढ़ाने के बजाय... बढ़ाएं
TextView AppCompatTextView
EditText AppCompatEditText
ToggleButton AppCompatToggleButton
Switch SwitchCompat
Button AppCompatButton
CheckedTextView AppCompatCheckedTextView
RadioButton AppCompatRadioButton
CheckBox AppCompatCheckBox
AutoCompleteTextView AppCompatAutoCompleteTextView
MultiAutoCompleteTextView AppCompatMultiAutoCompleteTextView

AppCompat के बिना ऐप्लिकेशन के लिए कस्टम व्यू जोड़ना

अगर आपका ऐप्लिकेशन AppCompat का इस्तेमाल नहीं करता है, तो emoji2-views-helper मॉड्यूल में व्यू इंटिग्रेशन हेल्पर का इस्तेमाल करें. इन्हें कस्टम व्यू में इस्तेमाल करने के लिए डिज़ाइन किया गया है. ये ऐसे हेल्पर हैं जिनका इस्तेमाल AppCompat लाइब्रेरी, इमोजी की सुविधा लागू करने के लिए करती है.

ऐसे ऐप्लिकेशन के लिए कस्टम व्यू की सुविधा चालू करने के लिए यह तरीका अपनाएं जो AppCompat का इस्तेमाल नहीं करते हैं.

  1. emoji2-views-helper लाइब्रेरी जोड़ें:

    implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
    
  2. अपने ऐप्लिकेशन के कस्टम व्यू में EmojiTextViewHelper या EmojiEditTextHelper शामिल करने के लिए, दिए गए निर्देशों का पालन करें.

  3. Android 10 या इससे पहले के वर्शन पर काम करने वाले डिवाइस पर अपना ऐप्लिकेशन लॉन्च करके, इंटिग्रेशन की जांच करें. साथ ही, यहां दी गई टेस्ट स्ट्रिंग दिखाएं. पक्का करें कि सभी वर्ण सही तरीके से रेंडर हो रहे हों.

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

emoji2 को मैनेज करने के लिए वैकल्पिक सुविधाएं

अपने ऐप्लिकेशन में emoji2 लाइब्रेरी शामिल करने के बाद, इस सेक्शन में बताई गई वैकल्पिक सुविधाएं जोड़ी जा सकती हैं.

किसी दूसरे फ़ॉन्ट या डाउनलोड किए जा सकने वाले फ़ॉन्ट उपलब्ध कराने वाली कंपनी का इस्तेमाल करने के लिए, emoji2 को कॉन्फ़िगर करना

emoji2 को किसी दूसरे फ़ॉन्ट या डाउनलोड किए जा सकने वाले फ़ॉन्ट उपलब्ध कराने वाली कंपनी का इस्तेमाल करने के लिए कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. अपने मेनिफ़ेस्ट में यह जोड़कर, EmojiCompatInitializer को बंद करें:

    <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    android:exported="false"
    tools:node="merge">
    <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer"
               tools:node="remove" />
    </provider>
  2. निम्न में से कोई एक कार्य करें:

    • DefaultEmojiCompatConfiguration.create(context) को कॉल करके, डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करें.

    • EmojiCompat.Config का इस्तेमाल करके, किसी दूसरे सोर्स से फ़ॉन्ट लोड करने के लिए अपना कॉन्फ़िगरेशन बनाएं. यह क्लास, EmojiCompat के व्यवहार में बदलाव करने के लिए कई विकल्प देती है. इनके बारे में यहां बताया गया है.

EmojiCompat के व्यवहार में बदलाव करना

EmojiCompat के व्यवहार में बदलाव करने के लिए, EmojiCompat.Config के इंस्टेंस का इस्तेमाल किया जा सकता है.

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

LOAD_STRATEGY_MANUAL की मदद से, यह कंट्रोल किया जा सकता है कि EmojiCompat.load() को कब कॉल किया जाए. साथ ही, LOAD_STRATEGY_DEFAULT की मदद से, EmojiCompat.init() को कॉल करने पर, लोड करने की प्रोसेस को साथ में शुरू किया जा सकता है.

ज़्यादातर ऐप्लिकेशन, LOAD_STRATEGY_MANUAL का इस्तेमाल करते हैं, ताकि वे फ़ॉन्ट लोड होने के थ्रेड और समय को कंट्रोल कर सकें. ऐप्लिकेशन को पहली स्क्रीन दिखने तक इंतज़ार करना चाहिए, ताकि स्टार्टअप में होने वाली देरी से बचा जा सके. EmojiCompatInitializer इस तरीके का इस्तेमाल करता है और पहली स्क्रीन के फिर से शुरू होने तक, इमोजी फ़ॉन्ट को लोड नहीं करता.

कॉन्फ़िगरेशन के अन्य पहलुओं को सेट करने के लिए, बेस क्लास के इन तरीकों का इस्तेमाल करें:

  • setReplaceAll(): इससे यह तय होता है कि EmojiCompat को मिले सभी इमोजी को EmojiSpan के इंस्टेंस से बदलना है या नहीं. डिफ़ॉल्ट रूप से, जब EmojiCompat को यह पता चलता है कि सिस्टम किसी इमोजी को रेंडर कर सकता है, तो वह उस इमोजी को नहीं बदलता है. true पर सेट होने पर, EmojiCompat सभी इमोजी को EmojiSpan ऑब्जेक्ट से बदल देता है.
  • setEmojiSpanIndicatorEnabled(): इससे पता चलता है कि EmojiCompat, इमोजी को EmojiSpan ऑब्जेक्ट से बदलता है या नहीं. true पर सेट होने पर, EmojiCompat, EmojiSpan के लिए बैकग्राउंड बनाता है. इस तरीके का इस्तेमाल मुख्य रूप से डीबग करने के लिए किया जाता है.
  • setEmojiSpanIndicatorColor: EmojiSpan को दिखाने के लिए रंग सेट करता है. डिफ़ॉल्ट वैल्यू GREEN है.
  • registerInitCallback(): यह ऐप्लिकेशन को EmojiCompat के शुरू होने की स्थिति के बारे में बताता है.

शुरू करने के लिए लिसनर जोड़ना

EmojiCompat और EmojiCompat.Config क्लास, registerInitCallback() और unregisterInitCallback() तरीके उपलब्ध कराती हैं. इनकी मदद से, शुरू करने के कॉलबैक को रजिस्टर और अनरजिस्टर किया जा सकता है. आपका ऐप्लिकेशन इन कॉलबैक का इस्तेमाल तब तक करता है, जब तक EmojiCompat शुरू नहीं हो जाता. इसके बाद, बैकग्राउंड थ्रेड या कस्टम व्यू में इमोजी प्रोसेस किए जाते हैं.

इन तरीकों का इस्तेमाल करने के लिए, EmojiCompat.InitCallback क्लास का इंस्टेंस बनाएं. इन तरीकों को कॉल करें और EmojiCompat.InitCallback क्लास का इंस्टेंस पास करें. शुरू होने की प्रोसेस पूरी होने पर, EmojiCompat क्लास, onInitialized() तरीके को कॉल करती है. अगर लाइब्रेरी शुरू नहीं हो पाती है, तो EmojiCompat क्लास, onFailed() तरीके को कॉल करता है.

किसी भी समय, शुरू होने की स्थिति देखने के लिए, getLoadState() तरीके को कॉल करें. यह तरीका इनमें से कोई एक वैल्यू दिखाता है: LOAD_STATE_LOADING, LOAD_STATE_SUCCEEDED, या LOAD_STATE_FAILED.

emoji2 के साथ बंडल किए गए फ़ॉन्ट इस्तेमाल करने की सुविधा

अपने ऐप्लिकेशन में इमोजी फ़ॉन्ट को बंडल करने के लिए, emoji2-bundled आर्टफ़ैक्ट का इस्तेमाल किया जा सकता है. हालांकि, NotoColorEmoji फ़ॉन्ट का साइज़ 10 एमबी से ज़्यादा है. इसलिए, हमारा सुझाव है कि आपका ऐप्लिकेशन, डाउनलोड किए जा सकने वाले फ़ॉन्ट का इस्तेमाल करे. emoji2-bundled आर्टफ़ैक्ट का इस्तेमाल उन डिवाइसों पर मौजूद ऐप्लिकेशन के लिए किया जाता है जिन पर डाउनलोड किए जा सकने वाले फ़ॉन्ट काम नहीं करते.

emoji2-bundled आर्टफ़ैक्ट का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. emoji2-bundled और emoji2 आर्टफ़ैक्ट शामिल करें:

    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
    
  2. बंडल किए गए कॉन्फ़िगरेशन का इस्तेमाल करने के लिए, emoji2 को कॉन्फ़िगर करें:

    Kotlin

    EmojiCompat.init(BundledEmojiCompatConfig(context))

    Java

    EmojiCompat.init(new BundledEmojiCompatConfig(context));
  3. emojicompat को शामिल करने या शामिल न करने के लिए, ऊपर दिया गया तरीका अपनाकर इंटिग्रेशन की जांच करें.AppCompat पक्का करें कि टेस्ट स्ट्रिंग सही तरीके से दिख रही हो.

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

EmojiCompat के अपने-आप कॉन्फ़िगर होने का असर

सिस्टम, स्टार्टअप लाइब्रेरी EmojiCompatInitializer और DefaultEmojiCompatConfig का इस्तेमाल करके, डिफ़ॉल्ट कॉन्फ़िगरेशन लागू करता है.

आपके ऐप्लिकेशन में पहली ऐक्टिविटी फिर से शुरू होने के बाद, इनिशियलाइज़र, इमोजी फ़ॉन्ट लोड करने की प्रोसेस को शेड्यूल करता है. इस छोटी सी देरी से, आपका ऐप्लिकेशन अपना शुरुआती कॉन्टेंट दिखा पाता है. साथ ही, बैकग्राउंड थ्रेड में फ़ॉन्ट लोड होने की वजह से होने वाली संभावित देरी से भी बचा जा सकता है.

DefaultEmojiCompatConfig, सिस्टम में इंस्टॉल किए गए ऐसे फ़ॉन्ट डाउनलोड करने की सुविधा देने वाले ऐप्लिकेशन को ढूंढता है जो EmojiCompat इंटरफ़ेस लागू करता है. जैसे, Google Play services. Google Play services की मदद से काम करने वाले डिवाइसों पर, यह Google Play services का इस्तेमाल करके फ़ॉन्ट लोड करता है.

इनिशियलाइज़र, इमोजी फ़ॉन्ट को लोड करने के लिए बैकग्राउंड थ्रेड बनाता है. साथ ही, फ़ॉन्ट डाउनलोड होने में 10 सेकंड लग सकते हैं. इसके बाद, यह टाइम आउट हो जाता है. फ़ॉन्ट डाउनलोड होने के बाद, बैकग्राउंड थ्रेड पर EmojiCompat को शुरू होने में करीब 150 मिलीसेकंड लगते हैं.

EmojiCompat को शुरू करने में देरी करें. भले ही, आपने EmojiCompatInitializer को बंद कर दिया हो. अगर आपने मैन्युअल तरीके से कॉन्फ़िगर किया है EmojiCompat, तो अपने ऐप्लिकेशन की पहली स्क्रीन दिखने के बाद EmojiCompat.load() को कॉल करें. इससे पहली स्क्रीन लोड होने के दौरान बैकग्राउंड में होने वाले टकराव से बचा जा सकेगा.

लोड होने के बाद, EmojiCompat इमोजी के मेटाडेटा को सेव करने के लिए, करीब 300 केबी रैम का इस्तेमाल करता है.