আধুনিক ইমোজি সমর্থন করুন

রচনা পদ্ধতিটি চেষ্টা করে দেখুন
জেটপ্যাক কম্পোজ হল অ্যান্ড্রয়েডের জন্য প্রস্তাবিত UI টুলকিট। কম্পোজে ইমোজি কীভাবে সমর্থন করবেন তা জানুন।

সকল ধরণের অ্যাপের জন্য ইমোজির ব্যবহার দ্রুত বৃদ্ধি পাচ্ছে, তাই ইউনিকোড দ্বারা প্রতি বছর স্ট্যান্ডার্ড ইমোজি সেট আপডেট করা হয়।

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

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

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

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

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

কম্পোজে ইমোজি সাপোর্ট

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

পূর্বশর্ত

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

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

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

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

যদি আপনার অ্যাপটি AppCompat ব্যবহার করে কিন্তু tofu (☐) প্রদর্শন করে

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

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

স্টার্টআপের সময় যেকোনো ফন্ট ক্যাশিং সাফ করতে অ্যাপের গুগল প্লে সার্ভিসের ডেটা সাফ করুন। এটি সাধারণত কয়েক ঘন্টা পরে সমস্যার সমাধান করে।

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

  1. আপনার অ্যান্ড্রয়েড চালিত ডিভাইসে সেটিংস খুলুন।

  2. অ্যাপস এবং বিজ্ঞপ্তি ট্যাপ করুন।

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

  4. অ্যাপগুলির মধ্যে স্ক্রোল করুন এবং Google Play পরিষেবাগুলিতে আলতো চাপুন।

  5. স্টোরেজ এবং ক্যাশে ট্যাপ করুন।

  6. ক্যাশে সাফ করুন আলতো চাপুন।

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

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

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

উইজেট ছাড়াই ইমোজিকম্প্যাট ব্যবহার করুন

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

কোটলিন

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

জাভা

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

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

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 ব্যবহার না করে, emoji2-views-helper মডিউলে থাকা ভিউ ইন্টিগ্রেশন হেল্পারগুলি ব্যবহার করুন যা কাস্টম ভিউতে ব্যবহারের জন্য ডিজাইন করা হয়েছে। এই হেল্পারগুলি AppCompat লাইব্রেরি ইমোজি সাপোর্ট বাস্তবায়নের জন্য ব্যবহার করে।

যেসব অ্যাপ AppCompat ব্যবহার করে না, তাদের কাস্টম ভিউ সমর্থন করার জন্য নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন।

  1. emoji2-views-helper লাইব্রেরি যোগ করুন:

    implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
    
  2. আপনার অ্যাপের কাস্টম ভিউতে EmojiTextViewHelper বা EmojiEditTextHelper অন্তর্ভুক্ত করার জন্য নির্দেশাবলী অনুসরণ করুন।

  3. Android 10 বা তার আগের ভার্সনে চলমান ডিভাইসে আপনার অ্যাপটি চালু করে এবং নিম্নলিখিত টেস্ট স্ট্রিংটি প্রদর্শন করে আপনার ইন্টিগ্রেশন পরীক্ষা করুন। নিশ্চিত করুন যে সমস্ত অক্ষর সঠিকভাবে রেন্ডার হচ্ছে।

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

ইমোজি২ পরিচালনার জন্য ঐচ্ছিক বৈশিষ্ট্য

আপনার অ্যাপে 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-bundled আর্টিফ্যাক্ট ব্যবহার করতে পারেন। তবে, যেহেতু NotoColorEmoji ফন্টটি 10 ​​MB এর বেশি, তাই আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনার অ্যাপটি যখনই সম্ভব ডাউনলোডযোগ্য ফন্ট ব্যবহার করুন। 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. AppCompat এর সাথে বা ছাড়া emojicompat অন্তর্ভুক্ত করার জন্য পূর্ববর্তী ধাপগুলি অনুসরণ করে ইন্টিগ্রেশন পরীক্ষা করুন। নিশ্চিত করুন যে পরীক্ষার স্ট্রিং সঠিকভাবে প্রদর্শিত হচ্ছে।

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

স্বয়ংক্রিয় ইমোজিকম্প্যাট কনফিগারেশনের প্রভাব

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

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

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

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

EmojiCompat এর আরম্ভকরণ স্থগিত করুন, এমনকি যদি আপনি EmojiCompatInitializer অক্ষম করেন। যদি আপনি ম্যানুয়ালি EmojiCompat কনফিগার করেন , তাহলে প্রথম স্ক্রিন লোডের সাথে ব্যাকগ্রাউন্ড বিরোধ এড়াতে আপনার অ্যাপের প্রথম স্ক্রিনটি প্রদর্শন করার পরে EmojiCompat.load() এ কল করুন।

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