इमोजी का स्टैंडर्ड सेट, हर साल 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) |
मार्च 2023 के बीओएम (Compose यूज़र इंटरफ़ेस (यूआई) 1.4) में, इमोजी के नए वर्शन के साथ काम करने की सुविधा जोड़ी गई है. इसमें एपीआई 21 तक के पुराने Android वर्शन के साथ पुराने सिस्टम के साथ काम करने की सुविधा भी शामिल है.
इस सुविधा के लिए, आपको अपने ऐप्लिकेशन में कोई बदलाव करने की ज़रूरत नहीं है. अगर Text और TextField (Material 2 या Material 3) या BasicText और BasicTextField का इस्तेमाल किया जाता है, तो आपको नए इमोजी की सुविधा पहले से ही मिलती है.
अपने ऐप्लिकेशन में नए इमोजी को टेस्ट करने का सबसे अच्छा तरीका यह है कि आप एपीआई 30 या इससे पहले के वर्शन वाले किसी असली डिवाइस का इस्तेमाल करें.
अगर आपको पसंद के मुताबिक इमोजी बनाने की सुविधा इस्तेमाल करनी है या किसी अन्य वजह से Compose में डिफ़ॉल्ट इमोजी रिज़ॉल्यूशन की सुविधा बंद करनी है, तो PlatformTextStyle(emojiSupportMatch) का इस्तेमाल करें:
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
इंटरोऑपरेबिलिटी
अगर आपका ऐप्लिकेशन एक ही Activity में व्यू और कंपोज़, दोनों का इस्तेमाल करता है, तो पक्का करें कि इमोजी को सही तरीके से कॉन्फ़िगर करने के लिए, सही एपीआई का इस्तेमाल किया जा रहा हो. यहां दिए गए सेक्शन में बताया गया है कि किस एपीआई का इस्तेमाल कब करना चाहिए.
ComponentActivity से कॉन्टेंट को और लंबा किया जा रहा है
अगर आपका Activity, AppCompatActivity के बजाय Compose ComponentActivity से एक्सटेंड होता है, तो AppCompat के बिना इमोजी इस्तेमाल करने के लिए दिए गए निर्देशों का पालन करें.
AppCompatActivity को एक्सटेंड न करने पर, अपनी डिपेंडेंसी में Emoji2 लाइब्रेरी जोड़ें. साथ ही, TextView विजेट के बजाय अपने व्यू में EmojiTextView का इस्तेमाल करें, जैसा कि इस स्निपेट में दिखाया गया है:
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: EmojiTextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
इसके बाद, अपनी एक्सएमएल फ़ाइल में:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
AppCompatActivity से कॉन्टेंट को और लंबा किया जा रहा है
अगर आपका Activity, AppCompatActivity से एक्सटेंड होता है, तो ऐप्लिकेशन बनाने की सुविधा को कॉल करने के लिए, ComposeView का इस्तेमाल किया जा सकता है. टेक्स्ट कंपोज़ेबल का इस्तेमाल करने पर, इमोजी Android के सभी वर्शन पर सही तरीके से रेंडर होते हैं.
अगर AppCompatActivity को एक्सटेंड किया जा रहा है, तो एक्सएमएल से TextView को इनफ़्लेट करें, ताकि इमोजी सही तरीके से रेंडर हो सकें.
अगर एक्सएमएल को इनफ़्लेट किया जा रहा है, तो यह लागू होता है:
ComposeViewके बाहर,Activityमें. नीचे दिए गए स्निपेट में,AppCompatActivityऔरTextViewका इस्तेमाल देखें:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: TextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
ComposeViewमें,AndroidViewBindingका इस्तेमाल करके व्यू बाइंडिंग की मदद से, जैसा कि इस स्निपेट में दिखाया गया है:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidViewBinding(ExampleViewBinding::inflate) { emojiTextView.text = EMOJI_TEXT } } } } ) } }
ComposeView में AndroidView का इस्तेमाल करके टेक्स्ट को बड़ा करने के लिए, AppCompatTextView का इस्तेमाल करें, ताकि इमोजी सही तरीके से रेंडर हो सकें:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidView( factory = { context -> AppCompatTextView(context) }, update = { it.text = EMOJI_TEXT } ) } } } ) } }
ज़्यादा जानकारी के लिए, इंटरऑपरेबिलिटी एपीआई से जुड़ा दस्तावेज़ देखें.
समस्या का हल
अगर आपको इमोजी के बजाय टोफ़ू (☐) दिख रहा है, तो पहले यह देखें कि क्या समस्या आपके टेस्ट डिवाइस में है. यहां कुछ मुख्य चीज़ें दी गई हैं जिनकी जांच की जा सकती है:
- ऐसा हो सकता है कि आप हाल ही में फ़्लैश किए गए डिवाइस या नए एम्युलेटर का इस्तेमाल कर रहे हों. अगर संभव हो, तो अक्सर इस्तेमाल किए जाने वाले किसी दूसरे असली टेस्ट डिवाइस का इस्तेमाल करें. साथ ही, पक्का करें कि उस डिवाइस पर आपके Google खाते से साइन इन किया गया हो. याद रखें कि एपीआई लेवल 30 या इससे कम होना चाहिए, ताकि यह पक्का किया जा सके कि इमोजी सही वर्शन में काम करें.
- टेस्ट फ़ोन में डाउनलोड किए जा सकने वाले फ़ॉन्ट काम नहीं करते.
- Google Play services का सही वर्शन देखें.
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर, लिंक टेक्स्ट दिखता है
- ध्यान देने वाली अन्य बातें
- Compose में टेक्स्ट
- Scroll