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

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

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

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

অ্যান্ড্রয়েড সংস্করণ 11 (এপিআই স্তর 30) এবং নিম্নতর ইমোজি ফন্ট আপডেট করতে পারে না, তাই সেই সংস্করণগুলিতে প্রদর্শিত অ্যাপগুলিকে ম্যানুয়ালি আপডেট করতে হবে।

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

উদাহরণ সংস্করণ
🫠 🫱🏼‍🫲🏿 🫰🏽 14.0 (সেপ্টেম্বর 2021)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 13.1 (সেপ্টেম্বর 2020)
🥲 🥷🏿 🐻‍❄️ 13.0 (মার্চ 2020)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 12.1 (অক্টোবর 2019)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 12.0 (ফেব্রুয়ারি 2019)

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

রচনায় ইমোজি সমর্থন

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

পূর্বশর্ত

আপনার অ্যাপটি সঠিকভাবে নতুন ইমোজি প্রদর্শন করছে তা নিশ্চিত করতে, এটিকে Android 10 (API লেভেল 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 ক্লাস প্রসারিত করে।

    কোটলিন

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

    জাভা

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

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

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

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

একটি সামঞ্জস্যপূর্ণ সংস্করণ ইনস্টল করা হয়েছে তা যাচাই করতে, নিম্নলিখিতগুলি করুন:

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

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

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 ব্যবহার করুন

EmojiCompat ক্লাস কীবোর্ডগুলিকে ইমোজি রেন্ডার করতে দেয় যে অ্যাপের সাথে তারা ইন্টারঅ্যাক্ট করছে। ইনপুট মেথড এডিটররা (IMEs) getEmojiMatch() পদ্ধতি ব্যবহার করে EmojiCompat এর একটি ইমোজি রেন্ডার করতে সক্ষম কিনা তা পরীক্ষা করতে পারে। এই পদ্ধতিটি একটি ইমোজির একটি CharSequence নেয় এবং যদি EmojiCompat ইমোজি সনাক্ত করতে এবং রেন্ডার করতে পারে তবে তা true হয়৷

প্যালেটে কোন ইমোজি রেন্ডার করতে হবে তা নির্ধারণ করতে কীবোর্ডটি EmojiCompat সংস্করণটিও পরীক্ষা করতে পারে যা অ্যাপটি সমর্থন করে। সংস্করণটি পরীক্ষা করতে, যদি উপলব্ধ থাকে, কীবোর্ডটি EditorInfo.extras বান্ডেলে নিম্নলিখিত কীগুলি সন্ধান করতে পারে:

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

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

আপনি আপনার অ্যাপে emoji2 লাইব্রেরি অন্তর্ভুক্ত করার পরে, আপনি এই বিভাগে বর্ণিত ঐচ্ছিক বৈশিষ্ট্যগুলি যোগ করতে পারেন।

একটি ভিন্ন ফন্ট বা ডাউনলোডযোগ্য ফন্ট প্রদানকারী ব্যবহার করতে ইমোজি2 কনফিগার করুন

একটি ভিন্ন ফন্ট বা ডাউনলোডযোগ্য ফন্ট প্রদানকারী ব্যবহার করার জন্য 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 এর একটি উদাহরণ ব্যবহার করতে পারেন।

সবচেয়ে গুরুত্বপূর্ণ কনফিগারেশন বিকল্প হল 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 অন্তর্ভুক্ত করার জন্য পূর্ববর্তী পদক্ষেপগুলি অনুসরণ করে ইন্টিগ্রেশন পরীক্ষা করুন৷ পরীক্ষা স্ট্রিং সঠিকভাবে প্রদর্শন নিশ্চিত করুন.

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

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

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

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

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

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

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

,

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

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

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

অ্যান্ড্রয়েড সংস্করণ 11 (এপিআই স্তর 30) এবং নিম্নতর ইমোজি ফন্ট আপডেট করতে পারে না, তাই সেই সংস্করণগুলিতে প্রদর্শিত অ্যাপগুলিকে ম্যানুয়ালি আপডেট করতে হবে।

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

উদাহরণ সংস্করণ
🫠 🫱🏼‍🫲🏿 🫰🏽 14.0 (সেপ্টেম্বর 2021)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 13.1 (সেপ্টেম্বর 2020)
🥲 🥷🏿 🐻‍❄️ 13.0 (মার্চ 2020)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 12.1 (অক্টোবর 2019)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 12.0 (ফেব্রুয়ারি 2019)

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

রচনায় ইমোজি সমর্থন

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

পূর্বশর্ত

আপনার অ্যাপটি সঠিকভাবে নতুন ইমোজি প্রদর্শন করছে তা নিশ্চিত করতে, এটিকে Android 10 (API লেভেল 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 ক্লাস প্রসারিত করে।

    কোটলিন

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

    জাভা

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

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

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

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

একটি সামঞ্জস্যপূর্ণ সংস্করণ ইনস্টল করা হয়েছে তা যাচাই করতে, নিম্নলিখিতগুলি করুন:

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

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

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 ব্যবহার করুন

EmojiCompat ক্লাস কীবোর্ডগুলিকে ইমোজি রেন্ডার করতে দেয় যে অ্যাপের সাথে তারা ইন্টারঅ্যাক্ট করছে। ইনপুট মেথড এডিটররা (IMEs) getEmojiMatch() পদ্ধতি ব্যবহার করে EmojiCompat এর একটি ইমোজি রেন্ডার করতে সক্ষম কিনা তা পরীক্ষা করতে পারে। এই পদ্ধতিটি একটি ইমোজির একটি CharSequence নেয় এবং যদি EmojiCompat ইমোজি সনাক্ত করতে এবং রেন্ডার করতে পারে তবে তা true হয়৷

প্যালেটে কোন ইমোজি রেন্ডার করতে হবে তা নির্ধারণ করতে কীবোর্ডটি EmojiCompat সংস্করণটিও পরীক্ষা করতে পারে যা অ্যাপটি সমর্থন করে। সংস্করণটি পরীক্ষা করতে, যদি উপলব্ধ থাকে, কীবোর্ডটি EditorInfo.extras বান্ডেলে নিম্নলিখিত কীগুলি সন্ধান করতে পারে:

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

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

আপনি আপনার অ্যাপে emoji2 লাইব্রেরি অন্তর্ভুক্ত করার পরে, আপনি এই বিভাগে বর্ণিত ঐচ্ছিক বৈশিষ্ট্যগুলি যোগ করতে পারেন।

একটি ভিন্ন ফন্ট বা ডাউনলোডযোগ্য ফন্ট প্রদানকারী ব্যবহার করতে ইমোজি2 কনফিগার করুন

একটি ভিন্ন ফন্ট বা ডাউনলোডযোগ্য ফন্ট প্রদানকারী ব্যবহার করার জন্য 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 এর একটি উদাহরণ ব্যবহার করতে পারেন।

সবচেয়ে গুরুত্বপূর্ণ কনফিগারেশন বিকল্প হল 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 অন্তর্ভুক্ত করার জন্য পূর্ববর্তী পদক্ষেপগুলি অনুসরণ করে ইন্টিগ্রেশন পরীক্ষা করুন৷ পরীক্ষা স্ট্রিং সঠিকভাবে প্রদর্শন নিশ্চিত করুন.

    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

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

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

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

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

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

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

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