پشتیبانی از اموجی‌های مدرن

امتحان کردن روش Compose
Jetpack Compose جعبه‌ابزار واسط کاربر توصیه‌شده برای Android است. با نحوه پشتیبانی از اموجی در Compose آشنا شوید.

مجموعه استاندارد اموجی سالانه توسط Unicode بازآوری می‌شود، زیرا استفاده از اموجی به‌سرعت برای انواع برنامه‌ها درحال افزایش است.

اگر برنامه‌تان محتوای اینترنتی نمایش می‌دهد یا ورودی نوشتاری ارائه می‌دهد، اکیداً توصیه می‌کنیم از جدیدترین قلم‌های اموجی پشتیبانی کنید. درغیراین‌صورت، اموجی‌های جدیدتر ممکن است به‌صورت یک چارگوش کوچک به‌نام توفو (☐) یا دیگر توالی‌های اموجی نادرست نمایش داده شوند.

Android نسخه ۱۱ (سطح میانای برنامه‌سازی کاربردی ۳۰) و پایین‌تر نمی‌توانند قلم اموجی را به‌روز کنند، بنابراین برنامه‌هایی که آن‌ها را در این نسخه‌ها نمایش می‌دهند باید به‌صورت دستی به‌روز شوند.

در زیر نمونه‌هایی از اموجی‌های مدرن را می‌بینید.

مثال‌ها نسخه
🫩 🪉 🇨🇶 ۱۶.۰ (سپتامبر ۲۰۲۴)
🐦‍🔥 🧑‍🧑‍🧒‍🧒 👩🏽‍🦽‍➡️ 🇲🇶 ‫۱۵.۱ (سپتامبر ۲۰۲۳)
🩷 🫸🏼 🐦‍⬛ ۱۵٫۰ (سپتامبر ۲۰۲۲)
🫠 🫱🏼‍🫲🏿 🫰🏽 ۱۴.۰ (سپتامبر ۲۰۲۱)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 ۱۳.۱ (سپتامبر ۲۰۲۰)
🥲 🥷🏿 🐻‍❄️ ‫۱۳.۰ (مارس ۲۰۲۰)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 ‫۱۲.۱ (اکتبر ۲۰۱۹)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 ۱۲٫۰ (فوریه ۲۰۱۹)

کتابخانه androidx.emoji2:emoji2 سازگاری با نسخه قدیمی ساده‌تری با نسخه‌های پایین‌تر Android ارائه می‌دهد. کتابخانه emoji2 وابستگی کتابخانه AppCompat است و برای کار کردن به پیکربندی بیشتری نیاز ندارد.

پشتیبانی از اموجی در Compose

BOM مارس ۲۰۲۳ (Compose UI 1.4) از جدیدترین نسخه اموجی پشتیبانی می‌کند، ازجمله سازگاری با نسخه‌های قدیمی‌تر Android تا API 21. این صفحه نحوه پیکربندی اموجی مدرن را در سیستم «نما» پوشش می‌دهد. برای اطلاعات بیشتر، صفحه اموجی در Compose را ببینید.

پیش‌نیازها

برای تأیید اینکه برنامه‌تان اموجی‌های جدیدتر را به‌درستی نمایش می‌دهد، آن را در دستگاهی با Android نسخه ۱۰ (سطح میانای برنامه‌سازی کاربردی ۲۹) یا پایین‌تر راه‌اندازی کنید. این صفحه شامل اموجی‌های مدرنی است که می‌توانید برای آزمایش نمایش دهید.

استفاده از AppCompat برای پشتیبانی از جدیدترین اموجی‌ها

‫AppCompat ۱.۴ از اموجی پشتیبانی می‌کند.

برای استفاده از 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 را گسترش می‌دهند.

    کاتلین

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

    جاوا

    MyActivity.java
    
    class MyActivity extends AppCompatActivity {
    ...
    }
  3. با راه‌اندازی برنامه‌تان در دستگاهی که Android نسخه ۱۰ یا پایین‌تر را اجرا می‌کند و نمایش رشته آزمایشی زیر، ادغام را آزمایش کنید. مطمئن شوید همه نویسه‌ها به‌درستی ارائه شده باشند.

    • ‫۱۶.۰: 🫩، 🪉، 🇨🇶
    • ‫۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ‫۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ‫14.0: 🫠، 🫱🏼‍🫲🏿، 🫰🏽
    • ‫۱۳.۱: 😶‍🌫️، 🧔🏻‍♀️، 🧑🏿‍❤️‍🧑🏾
    • ‫۱۳.۰: 🥲، 🥷🏿، 🐻‍❄️
    • ‫۱۲.۱: 🧑🏻‍🦰، 🧑🏿‍🦯، 👩🏻‍🤝‍👩🏼
    • ‫۱۲.۰: 🦩، 🦻🏿، 👩🏼‍🤝‍👩🏻

برنامه شما به‌طور خودکار اموجی سازگار با نسخه قدیمی را در همه دستگاه‌هایی که ارائه‌دهنده قلم‌های بارگیری‌شدنی سازگار با emoji2 ارائه می‌دهند، مانند دستگاه‌هایی که خدمات Google Play دارند، نمایش می‌دهد.

اگر برنامه‌تان از AppCompat استفاده می‌کند اما توفو (☐) نمایش می‌دهد

در برخی موارد، ممکن است برنامه‌تان به‌جای اموجی مناسب، tofu نمایش دهد، حتی اگر کتابخانه AppCompat را اضافه کنید. در زیر توضیحات و راه‌حل‌های احتمالی ارائه شده است.

برنامه را در دستگاهی که اخیراً فلش شده یا شبیه‌ساز جدیدی اجرا می‌کنید

داده‌های خدمات Google Play برنامه را پاک کنید تا هرگونه حافظه پنهان قلم که ممکن است درطول راه‌اندازی اتفاق بیفتد پاک شود. این کار معمولاً مشکل را پس‌از چند ساعت برطرف می‌کند.

برای پاک کردن داده‌های برنامه، کارهای زیر را انجام دهید:

  1. تنظیمات را در دستگاه Android باز کنید.

  2. روی برنامه‌ها و اعلان‌ها تک‌ضرب بزنید.

  3. روی مشاهده همه برنامه‌ها یا اطلاعات برنامه ضربه بزنید.

  4. در برنامه‌ها پیمایش کنید و روی خدمات Google Play تک‌ضرب بزنید.

  5. روی فضای ذخیره‌سازی و حافظه پنهان تک‌ضرب بزنید.

  6. روی پاک کردن حافظه پنهان ضربه بزنید.

برنامه شما از کلاس مرتبط با نوشتار AppCompat استفاده نمی‌کند

این اتفاق زمانی می‌افتد که AppCompatActivity را گسترش ندهید یا اگر نمایی را در کد نمونه‌سازی کنید، مثلاً TextView. موارد زیر را بررسی کنید:

  • فعالیت AppCompatActivity را تمدید می‌کند.
  • اگر نما را در کد ایجاد می‌کنید، از AppCompat زیرکلاس صحیح استفاده کنید.

AppCompatActivity به‌طور خودکار AppCompatTextView را به‌جای TextView هنگام گسترش XML گسترش می‌دهد، بنابراین نیازی به به‌روزرسانی XML ندارید.

تلفن آزمایشی از قلم‌های بارگیری‌شدنی پشتیبانی نمی‌کند

تأیید کنید که DefaultEmojiCompatConfig.create پیکربندی غیرتهی برمی‌گرداند.

شبیه‌ساز در سطح میانای برنامه‌سازی کاربردی قدیمی‌تر «خدمات Google Play» را ارتقا نداده است

هنگام استفاده از شبیه‌ساز در سطح API قدیمی‌تر، ممکن است لازم باشد «خدمات Google Play» همراه را برای emoji2 به‌روز کنید تا ارائه‌دهنده قلم را پیدا کنید. برای انجام این کار، در شبیه‌ساز به سیستم «فروشگاه Google Play» وارد شوید.

برای تأیید اینکه نسخه سازگار نصب شده است، کارهای زیر را انجام دهید:

  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. در XML و کد—هرجا از TextView، EditText، یا Button استفاده می‌کنید—به‌جای آن‌ها از EmojiTextView، EmojiEditText، یا EmojiButton استفاده کنید.

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

    با گنجاندن واحد emoji2، سیستم از ارائه‌دهنده قلم‌های بارگیری‌شدنی پیش‌فرض استفاده می‌کند تا قلم اموجی را به‌طور خودکار کمی پس‌از راه‌اندازی برنامه بار کند. به پیکربندی بیشتری نیاز نیست.

  3. برای آزمایش ادغام، برنامه‌تان را در دستگاهی که Android نسخه ۱۱ یا پایین‌تر را اجرا می‌کند راه‌اندازی کنید و رشته‌های آزمایشی زیر را نمایش دهید. مطمئن شوید همه نویسه‌ها به‌درستی ارائه شده باشند.

    • ‫۱۶.۰: 🫩، 🪉، 🇨🇶
    • ‫۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ‫۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ‫14.0: 🫠، 🫱🏼‍🫲🏿، 🫰🏽
    • ‫۱۳.۱: 😶‍🌫️، 🧔🏻‍♀️، 🧑🏿‍❤️‍🧑🏾
    • ‫۱۳.۰: 🥲، 🥷🏿، 🐻‍❄️
    • ‫۱۲.۱: 🧑🏻‍🦰، 🧑🏿‍🦯، 👩🏻‍🤝‍👩🏼
    • ‫۱۲.۰: 🦩، 🦻🏿، 👩🏼‍🤝‍👩🏻

استفاده از EmojiCompat بدون ابزاره‌ها

EmojiCompat از EmojiSpan برای پرداخت تصاویر صحیح استفاده می‌کند. بنابراین، باید هر شیء CharSequence داده‌شده را به شیء Spanned با اشیاء EmojiSpan تبدیل کند. کلاس EmojiCompat روش process() را برای تبدیل CharSequences به نمونه‌های Spanned ارائه می‌دهد. بااستفاده از این روش، می‌توانید process() را در پس‌زمینه فراخوانی کنید و نتایج را در حافظه نهان ذخیره کنید، که این کار عملکرد برنامه‌تان را بهبود می‌بخشد.

کاتلین

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

جاوا

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

استفاده از EmojiCompat برای ویرایشگرهای روش ورودی

کلاس EmojiCompat به صفحه‌کلیدها امکان می‌دهد اموجی‌های پشتیبانی‌شده توسط برنامه‌ای را که با آن تعامل دارند پرداخت کنند. ویرایشگرهای روش ورودی (IMEs) می‌توانند از روش 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 نسخه ۱۰ یا پایین‌تر را اجرا می‌کند و نمایش رشته آزمایشی زیر، ادغام را آزمایش کنید. مطمئن شوید همه نویسه‌ها به‌درستی ارائه شده باشند.

    • ‫۱۶.۰: 🫩، 🪉، 🇨🇶
    • ‫۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ‫۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ‫14.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.Config برای اصلاح رفتار EmojiCompat استفاده کنید.

مهم‌ترین گزینه پیکربندی 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 بیش‌از ۱۰ مگابایت است، اکیداً توصیه می‌کنیم برنامه‌تان درصورت امکان از قلم‌های بارگیری‌شدنی استفاده کند. ساخته emoji2-bundled برای برنامه‌هایی درنظر گرفته شده است که در دستگاه‌هایی هستند که از قلم‌های بارگیری‌شدنی پشتیبانی نمی‌کنند.

برای استفاده از مصنوع emoji2-bundled، کارهای زیر را انجام دهید:

  1. شامل داده‌های emoji2-bundled و emoji2:

    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
    
  2. emoji2 را پیکربندی کنید تا از پیکربندی بسته‌ای استفاده کند:

    کاتلین

    EmojiCompat.init(BundledEmojiCompatConfig(context))

    جاوا

    EmojiCompat.init(new BundledEmojiCompatConfig(context));
  3. با دنبال کردن مراحل قبلی برای گنجاندن emojicompat با یا بدون AppCompat، ادغام را آزمایش کنید. مطمئن شوید رشته آزمایشی به‌درستی نمایش داده می‌شود.

    • ‫۱۶.۰: 🫩، 🪉، 🇨🇶
    • ‫۱۵.۱: 🐦‍🔥، 🧑‍🧑‍🧒‍🧒، 👩🏽‍🦽‍➡️، 🇲🇶
    • ‫۱۵.۰: 🩷، 🫸🏼، 🐦‍⬛
    • ‫14.0: 🫠، 🫱🏼‍🫲🏿، 🫰🏽
    • ‫۱۳.۱: 😶‍🌫️، 🧔🏻‍♀️، 🧑🏿‍❤️‍🧑🏾
    • ‫۱۳.۰: 🥲، 🥷🏿، 🐻‍❄️
    • ‫۱۲.۱: 🧑🏻‍🦰، 🧑🏿‍🦯، 👩🏻‍🤝‍👩🏼
    • ‫۱۲.۰: 🦩، 🦻🏿، 👩🏼‍🤝‍👩🏻

تأثیر پیکربندی خودکار EmojiCompat

سیستم پیکربندی پیش‌فرض را بااستفاده از کتابخانه راه‌اندازی، EmojiCompatInitializer، و DefaultEmojiCompatConfig اعمال می‌کند.

پس‌از ازسرگیری اولین فعالیت در برنامه‌تان، مقداردهی اولیه بارگیری قلم اموجی را زمان‌بندی می‌کند. این تأخیر کوتاه به برنامه‌تان اجازه می‌دهد محتوای اولیه‌اش را بدون هرگونه تأخیر احتمالی ناشی از بار کردن قلم در رشته پس‌زمینه نمایش دهد.

‫DefaultEmojiCompatConfig به‌دنبال ارائه‌دهنده قلم بارگیری‌شدنی نصب‌شده در سیستم می‌گردد که میانای EmojiCompat را پیاده‌سازی کند، مثل خدمات Google Play. در دستگاه‌هایی که از خدمات Google Play استفاده می‌کنند، این گزینه قلم را بااستفاده از خدمات Google Play بار می‌کند.

مقداردهی اولیه یک رشته پس‌زمینه برای بار کردن قلم اموجی ایجاد می‌کند، و بارگیری قلم می‌تواند تا ۱۰ ثانیه قبل‌از اتمام مهلت طول بکشد. پس‌از بارگیری قلم، حدود ۱۵۰ میلی‌ثانیه در رشته پس‌زمینه طول می‌کشد تا EmojiCompat مقداردهی اولیه شود.

مقداردهی اولیه EmojiCompat را به‌تعویق بیندازید، حتی اگر EmojiCompatInitializer را غیرفعال کنید. اگر پیکربندی را به‌صورت دستی انجام می‌دهیدEmojiCompat، پس‌از نمایش اولین صفحه برنامه‌تان، EmojiCompat.load() را فراخوانی کنید تا از تداخل پس‌زمینه با بار کردن اولین صفحه جلوگیری شود.

پس‌از بار کردن، EmojiCompat از حدود ۳۰۰ کیلوبایت حافظه دسترسی تصادفی برای نگهداری فراداده اموجی استفاده می‌کند.