আধুনিক ইমোজি কাজ করে

Compose-এর মাধ্যমে চেষ্টা করুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। Compose-এ কীভাবে ইমোজি সাপোর্ট করতে হয় তা জানুন।

ইমোজির স্ট্যান্ডার্ড সেট প্রতি বছর Unicode-এর মাধ্যমে রিফ্রেশ করা হয়, কারণ সব ধরনের অ্যাপের জন্য ইমোজির ব্যবহার দ্রুত বৃদ্ধি পাচ্ছে।

আপনার অ্যাপ যদি ইন্টারনেট কন্টেন্ট দেখায় বা টেক্সট ইনপুট প্রদান করে, তাহলে আমরা লেটেস্ট ইমোজি ফন্ট সাপোর্ট করার জন্য বিশেষভাবে সাজেস্ট করি। অন্যথায়, পরে ইমোজি ছোট বর্গাকার বক্স হিসেবে দেখানো হতে পারে যাকে টোফু (☐) বা অন্য ভুলভাবে রেন্ডার করা ইমোজি সিকোয়েন্স বলা হয়।

Android ভার্সন ১১ (API লেভেল ৩০) এবং তার আগের ভার্সনে ইমোজি ফন্ট আপডেট করা যায় না, তাই যেসব অ্যাপে এইসব ভার্সনে ইমোজি দেখানো হয় সেগুলি ম্যানুয়ালি আপডেট করতে হবে।

আধুনিক ইমোজির কিছু উদাহরণ নিচে দেওয়া হল।

উদাহরণ ভার্সন
🫩 🪉 🇨🇶 ১৬.০ (সেপ্টেম্বর ২০২৪)
🐦‍🔥 🧑‍🧑‍🧒‍🧒 👩🏽‍🦽‍➡️ 🇲🇶 ১৫.১ (সেপ্টেম্বর ২০২৩)
🩷 🫸🏼 🐦‍⬛ 15.0 (সেপ্টেম্বর ২০২২)
🫠 🫱🏼‍🫲🏿 🫰🏽 14.0 (সেপ্টেম্বর ২০২১)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 ১৩.১ (সেপ্টেম্বর ২০২০)
🥲 🥷🏿 🐻‍❄️ ১৩.০ (মার্চ ২০২০)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 ১২.১ (অক্টোবর ২০১৯)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 ১২.০ (ফেব্রুয়ারি ২০১৯)

androidx.emoji2:emoji2 লাইব্রেরি Android-এর পুরনো ভার্সনের সাথে আরও সহজ ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রদান করে। emoji2 লাইব্রেরি AppCompat লাইব্রেরির উপর নির্ভরশীল এবং এটি কাজ করার জন্য আর কোনও কনফিগারেশনের প্রয়োজন নেই।

Compose-এ ইমোজি সাপোর্ট

BOM মার্চ ২০২৩ (Compose UI ১.৪) লেটেস্ট ইমোজি ভার্সনের জন্য সহায়তা নিয়ে আসে, যার মধ্যে API ২১ পর্যন্ত পুরনো Android ভার্সনের সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি অন্তর্ভুক্ত। ভিউ সিস্টেমে কীভাবে আধুনিক ইমোজি কনফিগার করতে হয় তা এই পৃষ্ঠায় কভার করা হয়েছে। আরও জানতে Compose-এ ইমোজি পৃষ্ঠা দেখুন।

পূর্বশর্ত

আপনার অ্যাপ নতুন ইমোজি সঠিকভাবে দেখাচ্ছে কিনা তা কনফার্ম করতে, Android 10 (API লেভেল 29) বা তার আগের ভার্সন চালানো ডিভাইসে এটি লঞ্চ করুন। এই পৃষ্ঠায় আধুনিক ইমোজি আছে যা আপনি পরীক্ষা করার জন্য দেখাতে পারেন।

লেটেস্ট ইমোজি সাপোর্ট করতে AppCompat ব্যবহার করুন

AppCompat 1.4-এ ইমোজির জন্য সহায়তা অন্তর্ভুক্ত আছে।

ইমোজি সাপোর্ট করার জন্য AppCompat ব্যবহার করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. আপনার মডিউল AppCompat লাইব্রেরি ভার্সন ১.৪.০-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 {
    ...
    }

    জাভা

    MyActivity.java
    
    class MyActivity extends AppCompatActivity {
    ...
    }
  3. Android 10 বা তার আগের কোনও ভার্সন চলছে এমন ডিভাইসে আপনার অ্যাপ লঞ্চ করে এবং নিম্নলিখিত টেস্ট স্ট্রিং দেখিয়ে আপনার ইন্টিগ্রেশন টেস্ট করুন। সব অক্ষর সঠিকভাবে রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করুন।

    • ১৬.০: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • ১৫.০: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • ১৩.১: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • ১২.১: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • ১২.০: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

আপনার অ্যাপ অটোমেটিক ব্যাকওয়ার্ড-কম্প্যাটিবল ইমোজি সেইসব ডিভাইসে দেখায় যেগুলি emoji2-কম্প্যাটিবল ডাউনলোড করা যাবে এমন ফন্ট প্রদানকারী, যেমন Google Play পরিষেবা দ্বারা পরিচালিত ডিভাইস।

আপনার অ্যাপ AppCompat ব্যবহার করলেও যদি টোফু (☐) দেখায়

কিছু ক্ষেত্রে, আপনার অ্যাপ সঠিক ইমোজির পরিবর্তে টোফু দেখাতে পারে, এমনকি আপনি AppCompat লাইব্রেরি যোগ করলেও। সম্ভাব্য ব্যাখ্যা ও সমাধান নিচে দেওয়া হল।

আপনি সম্প্রতি ফ্ল্যাশ করা ডিভাইস বা নতুন এমুলেটরে অ্যাপটি চালাচ্ছেন

স্টার্টআপের সময় হতে পারে এমন কোনও ফন্ট ক্যাশিং মুছে ফেলতে অ্যাপের Google Play পরিষেবা ডেটা মুছে ফেলুন। সাধারণত কয়েক ঘণ্টা পরে এই সমস্যার সমাধান হয়ে যায়।

অ্যাপ ডেটা মুছে দিতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. আপনার Android-চালিত ডিভাইসে সেটিংস খুলুন।

  2. অ্যাপ ও বিজ্ঞপ্তি বিকল্পে ট্যাপ করুন।

  3. সব অ্যাপ দেখুন বা অ্যাপ সম্পর্কিত তথ্য বিকল্পে ট্যাপ করুন।

  4. অ্যাপের তালিকা স্ক্রল করে Google Play পরিষেবা বিকল্পে ট্যাপ করুন।

  5. স্টোরেজ ও ক্যাশে বিকল্পে ট্যাপ করুন।

  6. ক্যাশে মুছুন বিকল্পে ট্যাপ করুন।

আপনার অ্যাপ AppCompat টেক্সট-সম্পর্কিত ক্লাস ব্যবহার করছে না

আপনি AppCompatActivity এক্সটেন্ড না করলে অথবা কোডে কোনও ভিউ ইনস্ট্যান্টিয়েট করলে, যেমন TextView, এটি হতে পারে। নিম্নলিখিত বিষয়গুলি চেক করুন:

  • অ্যাক্টিভিটি AppCompatActivity পর্যন্ত চলবে।
  • কোডে ভিউ তৈরি করার সময়, সঠিক AppCompat সাবক্লাস ব্যবহার করুন।

XML ইনফ্লেট করার সময় AppCompatActivity অটোমেটিক TextView-এর জায়গায় AppCompatTextView ইনফ্লেট করে, তাই আপনাকে XML আপডেট করতে হবে না।

টেস্ট ফোনে ডাউনলোড করা যাবে এমন ফন্ট কাজ করে না

DefaultEmojiCompatConfig.create যাতে নন-নাল কনফিগারেশন রিটার্ন করে তা যাচাই করুন।

আগের API লেভেলে থাকা এমুলেটর Google Play পরিষেবা আপগ্রেড করেনি

আগের API লেভেলে এমুলেটর ব্যবহার করার সময়, ফন্ট প্রোভাইডার খুঁজে পেতে আপনাকে হয়ত emoji2-এর জন্য বান্ডেল করা Google Play পরিষেবা আপডেট করতে হবে। এটি করতে, এমুলেটরে 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. 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 11 বা তার আগের কোনও ভার্সন চলছে এমন ডিভাইসে আপনার অ্যাপ চালু করুন এবং নিম্নলিখিত টেস্ট স্ট্রিংগুলি দেখুন। সব অক্ষর সঠিকভাবে রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করুন।

    • ১৬.০: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • ১৫.০: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • ১৩.১: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • ১২.১: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • ১২.০: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

উইজেট ছাড়াই EmojiCompat ব্যবহার করুন

EmojiCompat সঠিক ছবি রেন্ডার করতে EmojiSpan ব্যবহার করে। তাই, এটিকে যেকোনও প্রদত্ত CharSequence অবজেক্টকে Spanned অবজেক্টে কনভার্ট করতে হবে, যেখানে EmojiSpan অবজেক্ট থাকবে। EmojiCompat ক্লাস CharSequences-কে Spanned ইনস্ট্যান্সে কনভার্ট করার জন্য process() পদ্ধতি প্রদান করে। এই পদ্ধতি ব্যবহার করে, আপনি ব্যাকগ্রাউন্ডে process() কল করতে এবং ফলাফল ক্যাশে করতে পারবেন, যা আপনার অ্যাপের পারফর্ম্যান্স উন্নত করে।

Kotlin

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

জাভা

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

ইনপুট পদ্ধতি এডিটরের জন্য EmojiCompat ব্যবহার করুন

EmojiCompat ক্লাস, কীবোর্ডকে সেইসব ইমোজি রেন্ডার করতে দেয় যেগুলি অ্যাপে কাজ করে এবং যেগুলির সাথে ইন্টার‍্যাক্ট করা হয়। ইনপুট পদ্ধতি এডিটর (IME) 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 বা তার আগের কোনও ভার্সন চলছে এমন ডিভাইসে আপনার অ্যাপ লঞ্চ করে এবং নিম্নলিখিত টেস্ট স্ট্রিং দেখিয়ে আপনার ইন্টিগ্রেশন টেস্ট করুন। সব অক্ষর সঠিকভাবে রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করুন।

    • ১৬.০: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • ১৫.০: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • ১৩.১: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.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 ফন্ট ১০ এমবির বেশি হওয়ার কারণে, আমরা সাজেস্ট করি যে আপনার অ্যাপে সম্ভব হলে ডাউনলোড করা যায় এমন ফন্ট ব্যবহার করুন। 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))

    জাভা

    EmojiCompat.init(new BundledEmojiCompatConfig(context));
  3. AppCompat সহ বা ছাড়া emojicompat অন্তর্ভুক্ত করার জন্য পূর্ববর্তী ধাপগুলি অনুসরণ করে ইন্টিগ্রেশন পরীক্ষা করুন। টেস্ট স্ট্রিং সঠিকভাবে দেখাচ্ছে কিনা তা নিশ্চিত করুন।

    • ১৬.০: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • ১৫.০: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • ১৩.১: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • ১২.১: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • ১২.০: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

অটোমেটিক EmojiCompat কনফিগারেশনের প্রভাব

সিস্টেম স্টার্টআপ লাইব্রেরি, EmojiCompatInitializer এবং DefaultEmojiCompatConfig ব্যবহার করে ডিফল্ট কনফিগারেশন প্রয়োগ করে।

আপনার অ্যাপে প্রথম অ্যাক্টিভিটি আবার শুরু হওয়ার পরে, ইনিশিয়ালাইজার ইমোজি ফন্ট লোডিং শিডিউল করে। এই সংক্ষিপ্ত বিলম্ব আপনার অ্যাপকে ব্যাকগ্রাউন্ড থ্রেডে ফন্ট লোড করার কারণে কোনও সম্ভাব্য লেটেন্সি ছাড়াই তার প্রাথমিক কন্টেন্ট প্রদর্শন করতে দেয়।

DefaultEmojiCompatConfig সিস্টেমে ইনস্টল করা ডাউনলোডযোগ্য ফন্ট প্রদানকারীকে খোঁজে যা EmojiCompat ইন্টারফেস প্রয়োগ করে, যেমন Google Play পরিষেবা। Google Play পরিষেবা দ্বারা পরিচালিত ডিভাইসে, এটি Google Play পরিষেবা ব্যবহার করে ফন্ট লোড করে।

ইনিশিয়ালাইজার ইমোজি ফন্ট লোড করার জন্য ব্যাকগ্রাউন্ড থ্রেড তৈরি করে এবং ফন্ট ডাউনলোড করতে টাইম-আউট হওয়ার আগে ১০ সেকেন্ড পর্যন্ত সময় লাগতে পারে। ফন্ট ডাউনলোড করার পরে, ব্যাকগ্রাউন্ড থ্রেডে EmojiCompat শুরু করতে প্রায় ১৫০ মিলিসেকেন্ড সময় লাগে।

আপনি EmojiCompatInitializer বন্ধ করে দিলেও, EmojiCompat-এর ইনিশিয়ালাইজেশন পিছিয়ে দিন। আপনি যদি ম্যানুয়ালি কনফিগার করেন EmojiCompat, তাহলে প্রথম স্ক্রিন লোড হওয়ার সময় ব্যাকগ্রাউন্ডে কোনও সমস্যা এড়াতে, আপনার অ্যাপের প্রথম স্ক্রিন দেখানোর পরে EmojiCompat.load() কল করুন।

লোড করার পরে, ইমোজি মেটাডেটা ধরে রাখতে EmojiCompat প্রায় ৩০০ কেবি RAM ব্যবহার করে।