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

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

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

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

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 यूज़र इंटरफ़ेस (यूआई) 1.4) में, इमोजी के सबसे नए वर्शन के साथ काम करने की सुविधा जोड़ी गई है. इसमें एपीआई 21 तक के Android के पुराने सिस्टम के साथ काम करने की सुविधा भी शामिल है. इस पेज पर, व्यू सिस्टम में नए इमोजी कॉन्फ़िगर करने का तरीका बताया गया है. ज़्यादा जानकारी के लिए, ईमेल लिखने के लिए इमोजी पेज देखें.

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

यह पुष्टि करने के लिए कि आपका ऐप्लिकेशन नए इमोजी सही तरीके से दिखाता है, उसे 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 सब-क्लास का इस्तेमाल करें.

एक्सएमएल को इनफ़्लेट करते समय, AppCompatActivity अपने-आप TextView के बजाय 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 क्लास, CharSequences को Spanned इंस्टेंस में बदलने के लिए, process() तरीका उपलब्ध कराती है. इस तरीके का इस्तेमाल करके, बैकग्राउंड में 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 में अपने व्यू बढ़ाने के लिए, यहां दी गई टेबल को गाइड के तौर पर इस्तेमाल करें:

सदस्यता की अवधि बढ़ाने के बजाय... Extend
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. AppCompat के साथ या इसके बिना emojicompat को शामिल करने के लिए, पिछले चरणों का पालन करके इंटिग्रेशन की जांच करें. पक्का करें कि टेस्ट स्ट्रिंग सही तरीके से दिख रही हो.

    • 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 केबी रैम का इस्तेमाल करता है.