รองรับอีโมจิสมัยใหม่

ลองใช้วิธีแบบ Compose
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนำสำหรับ Android ดูวิธีรองรับอีโมจิใน Compose

ชุดอีโมจิมาตรฐานจะได้รับการอัปเดตทุกปีโดย Unicode เนื่องจากการใช้อีโมจิเพิ่มขึ้นอย่างรวดเร็วในแอปทุกประเภท

หากแอปแสดงเนื้อหาทางอินเทอร์เน็ตหรือมีการป้อนข้อความ เราขอแนะนำอย่างยิ่งให้รองรับแบบอักษรอีโมจิล่าสุด มิเช่นนั้น อีโมจิที่ใหม่กว่าอาจแสดงเป็นกล่องสี่เหลี่ยมเล็กๆ ที่เรียกว่าเต้าหู้ (☐) หรือลำดับอีโมจิอื่นๆ ที่แสดงผลไม่ถูกต้อง

Android เวอร์ชัน 11 (ระดับ API 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)

ไลบรารี androidx.emoji2:emoji2 ช่วยให้เข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันต่ำกว่าได้ง่ายขึ้น ไลบรารี emoji2 เป็นทรัพยากร Dependency ของไลบรารี AppCompat และไม่จำเป็นต้องกำหนดค่าเพิ่มเติมเพื่อใช้งาน

การรองรับอีโมจิใน Compose

BOM เดือนมีนาคม 2023 (Compose UI 1.4) รองรับอีโมจิเวอร์ชันล่าสุด รวมถึงความเข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันเก่าจนถึง API 21 หน้านี้จะอธิบายวิธีกำหนดค่าอีโมจิสมัยใหม่ในระบบ View ดูข้อมูลเพิ่มเติมได้ที่หน้าอีโมจิใน Compose

สิ่งที่ต้องมีก่อน

หากต้องการยืนยันว่าแอปแสดงอีโมจิใหม่ๆ อย่างถูกต้อง ให้เปิดแอปในอุปกรณ์ที่ใช้ 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

    Kotlin

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

    Java

    MyActivity.java
    
    class MyActivity extends AppCompatActivity {
    ...
    }
  3. ทดสอบการผสานรวมโดยเปิดแอปในอุปกรณ์ที่ใช้ Android 10 หรือต่ำกว่า และแสดงสตริงทดสอบต่อไปนี้ ตรวจสอบว่าอักขระทั้งหมดแสดงผลอย่างถูกต้อง

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

แอปจะแสดงอีโมจิที่เข้ากันได้แบบย้อนหลังโดยอัตโนมัติในอุปกรณ์ทั้งหมดที่มีผู้ให้บริการแบบอักษรที่ดาวน์โหลดได้ซึ่งเข้ากันได้กับ emoji2 เช่น อุปกรณ์ที่ขับเคลื่อนโดยบริการ Google Play

หากแอปใช้ AppCompat แต่แสดงอักขระเต้าหู้ (☐)

ในบางกรณี แอปอาจแสดงอักขระเต้าหู้แทนอิโมจิที่เหมาะสม แม้ว่าคุณจะเพิ่มไลบรารี AppCompat แล้วก็ตาม ต่อไปนี้คือคำอธิบายและวิธีแก้ปัญหาที่เป็นไปได้

คุณกำลังเรียกใช้แอปในอุปกรณ์ที่เพิ่งแฟลชหรือโปรแกรมจำลองใหม่

ล้างข้อมูลบริการ Google Play ของแอปเพื่อล้างแคชแบบอักษรที่อาจเกิดขึ้นระหว่างการเริ่มต้นระบบ ซึ่งโดยปกติแล้วจะช่วยแก้ปัญหาได้หลังจากผ่านไป 2-3 ชั่วโมง

หากต้องการล้างข้อมูลแอป ให้ทำดังนี้

  1. เปิดการตั้งค่าในอุปกรณ์ Android

  2. แตะแอปและการแจ้งเตือน

  3. แตะดูแอปทั้งหมดหรือข้อมูลแอป

  4. เลื่อนดูแอปต่างๆ แล้วแตะบริการ Google Play

  5. แตะพื้นที่เก็บข้อมูลและแคช

  6. แตะล้างแคช

แอปของคุณไม่ได้ใช้คลาสที่เกี่ยวข้องกับข้อความ AppCompat

กรณีนี้อาจเกิดขึ้นหากคุณไม่ได้ขยาย AppCompatActivity หรือหากคุณสร้างอินสแตนซ์มุมมองในโค้ด เช่น TextView ตรวจสอบสิ่งต่อไปนี้

  • กิจกรรมจะขยายเวลาออกไป AppCompatActivity
  • หากสร้างมุมมองในโค้ด ให้ใช้คลาสย่อย AppCompat ที่ถูกต้อง

AppCompatActivity จะขยาย AppCompatTextView แทน TextView โดยอัตโนมัติเมื่อขยาย XML คุณจึงไม่ต้องอัปเดต XML

โทรศัพท์ที่ใช้ทดสอบไม่รองรับแบบอักษรที่ดาวน์โหลดได้

ตรวจสอบว่า DefaultEmojiCompatConfig.create แสดงผลการกำหนดค่าที่ไม่ใช่ค่า Null

โปรแกรมจำลองในระดับ API ก่อนหน้าไม่ได้อัปเกรดบริการ Google Play

เมื่อใช้โปรแกรมจำลองในระดับ API ก่อนหน้า คุณอาจต้องอัปเดตบริการ Google Play ที่รวมมากับ emoji2 เพื่อค้นหาผู้ให้บริการแบบอักษร โดยให้เข้าสู่ระบบ 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 หรือต่ำกว่า และแสดงสตริงทดสอบต่อไปนี้ ตรวจสอบว่าอักขระทั้งหมดแสดงผลอย่างถูกต้อง

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

ใช้ EmojiCompat โดยไม่มีวิดเจ็ต

EmojiCompat ใช้ EmojiSpan เพื่อแสดงผลรูปภาพที่ถูกต้อง ดังนั้น จึงต้องแปลงออบเจ็กต์ CharSequence ที่ระบุเป็นออบเจ็กต์ Spanned ที่มีออบเจ็กต์ EmojiSpan คลาส EmojiCompat มีเมธอด process() เพื่อแปลง CharSequences เป็นอินสแตนซ์ Spanned เมื่อใช้วิธีนี้ คุณจะเรียกใช้ process() ในเบื้องหลังและแคชผลลัพธ์ได้ ซึ่งจะช่วยปรับปรุงประสิทธิภาพของแอป

Kotlin

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

Java

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

ใช้ EmojiCompat สำหรับโปรแกรมแก้ไขวิธีการป้อนข้อมูล

คลาส EmojiCompat ช่วยให้แป้นพิมพ์แสดงผลอีโมจิที่แอปที่แป้นพิมพ์โต้ตอบด้วยรองรับ เครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) สามารถใช้เมธอด getEmojiMatch() เพื่อตรวจสอบว่าอินสแตนซ์ของ EmojiCompat แสดงผลอีโมจิได้หรือไม่ เมธอดนี้จะใช้ CharSequence ของอีโมจิและแสดงผล true หาก EmojiCompat ตรวจพบและแสดงผลอีโมจิได้

แป้นพิมพ์ยังสามารถตรวจสอบเวอร์ชันของ 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 หรือต่ำกว่า และแสดงสตริงทดสอบต่อไปนี้ ตรวจสอบว่าอักขระทั้งหมดแสดงผลอย่างถูกต้อง

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

ฟีเจอร์เสริมสำหรับการจัดการ emoji2

หลังจากรวมไลบรารี emoji2 ไว้ในแอปแล้ว คุณจะเพิ่มฟีเจอร์ที่ไม่บังคับซึ่งอธิบายไว้ในส่วนนี้ได้

กำหนดค่า emoji2 ให้ใช้แบบอักษรอื่นหรือผู้ให้บริการแบบอักษรที่ดาวน์โหลดได้

หากต้องการกำหนดค่า emoji2 ให้ใช้แบบอักษรอื่นหรือผู้ให้บริการแบบอักษรที่ดาวน์โหลดได้ ให้ทำดังนี้

  1. ปิดใช้ EmojiCompatInitializer โดยเพิ่มโค้ดต่อไปนี้ลงในไฟล์ Manifest

    <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

เพิ่ม Listener การเริ่มต้น

คลาส EmojiCompat และ EmojiCompat.Config มีเมธอด registerInitCallback() และ unregisterInitCallback() เพื่อลงทะเบียนและยกเลิกการลงทะเบียน Callback การเริ่มต้น แอปของคุณใช้ Callback เหล่านี้เพื่อรอจนกว่า EmojiCompat จะเริ่มต้นก่อนที่คุณจะประมวลผลอีโมจิในชุดข้อความเบื้องหลังหรือในมุมมองที่กำหนดเอง

หากต้องการใช้เมธอดเหล่านี้ ให้สร้างอินสแตนซ์ของคลาส EmojiCompat.InitCallback เรียกใช้เมธอดเหล่านี้และส่งอินสแตนซ์ของคลาส EmojiCompat.InitCallback เมื่อการเริ่มต้นเสร็จสมบูรณ์ คลาส EmojiCompat จะเรียกใช้เมธอด onInitialized() หากไลบรารีเริ่มต้นไม่สำเร็จ คลาส EmojiCompat จะเรียกใช้เมธอด onFailed()

หากต้องการตรวจสอบสถานะการเริ่มต้นที่จุดใดก็ตาม ให้เรียกใช้เมธอด getLoadState() เมธอดนี้จะแสดงผลค่าใดค่าหนึ่งต่อไปนี้ LOAD_STATE_LOADING, LOAD_STATE_SUCCEEDED, หรือ LOAD_STATE_FAILED

รองรับแบบอักษรที่รวมมากับ emoji2

คุณสามารถใช้อาร์ติแฟกต์ 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 เพื่อใช้การกำหนดค่าที่รวมมาด้วย โดยทำดังนี้

    Kotlin

    EmojiCompat.init(BundledEmojiCompatConfig(context))

    Java

    EmojiCompat.init(new BundledEmojiCompatConfig(context));
  3. ทดสอบการผสานรวมโดยทำตามขั้นตอนก่อนหน้าเพื่อรวม emojicompat โดยมีหรือไม่มี AppCompat ตรวจสอบว่าสตริงทดสอบแสดงอย่างถูกต้อง

    • 16.0: 🫩, 🪉, 🇨🇶
    • 15.1: 🐦‍🔥, 🧑‍🧑‍🧒‍🧒, 👩🏽‍🦽‍➡️, 🇲🇶
    • 15.0: 🩷, 🫸🏼, 🐦‍⬛
    • 14.0: 🫠, 🫱🏼‍🫲🏿, 🫰🏽
    • 13.1: 😶‍🌫️, 🧔🏻‍♀️, 🧑🏿‍❤️‍🧑🏾
    • 13.0: 🥲, 🥷🏿, 🐻‍❄️
    • 12.1: 🧑🏻‍🦰, 🧑🏿‍🦯, 👩🏻‍🤝‍👩🏼
    • 12.0: 🦩, 🦻🏿, 👩🏼‍🤝‍👩🏻

ผลกระทบของการกำหนดค่า EmojiCompat อัตโนมัติ

ระบบจะใช้การกำหนดค่าเริ่มต้นโดยใช้ไลบรารีเริ่มต้น, EmojiCompatInitializer และ DefaultEmojiCompatConfig

หลังจากกิจกรรมแรกกลับมาทำงานในแอป ตัวเริ่มต้นจะกำหนดเวลาการโหลดแบบอักษรอีโมจิ ความล่าช้าสั้นๆ นี้ช่วยให้แอปแสดงเนื้อหาเริ่มต้นได้โดยไม่มีเวลาในการตอบสนองที่อาจเกิดขึ้นเนื่องจากการโหลดแบบอักษรในชุดข้อความเบื้องหลัง

DefaultEmojiCompatConfig จะค้นหาผู้ให้บริการแบบอักษรที่ดาวน์โหลดได้ซึ่งติดตั้งในระบบที่ใช้EmojiCompatอินเทอร์เฟซ เช่น บริการ Google Play ในอุปกรณ์ที่ขับเคลื่อนโดยบริการ Google Play ระบบจะโหลดแบบอักษรโดยใช้บริการ Google Play

ตัวเริ่มต้นจะสร้างชุดข้อความเบื้องหลังเพื่อโหลดแบบอักษรอีโมจิ และการดาวน์โหลดแบบอักษรอาจใช้เวลาถึง 10 วินาทีก่อนที่จะหมดเวลา หลังจากดาวน์โหลดแบบอักษรแล้ว ระบบจะใช้เวลาประมาณ 150 มิลลิวินาทีในเทรดเบื้องหลังเพื่อเริ่มต้น EmojiCompat

เลื่อนเวลาการเริ่มต้นของ EmojiCompat แม้ว่าคุณจะปิดใช้ EmojiCompatInitializer ก็ตาม หากคุณกำหนดค่า EmojiCompat ด้วยตนเอง ให้เรียกใช้ EmojiCompat.load() หลังจากที่แสดงหน้าจอแรกของแอปเพื่อหลีกเลี่ยงการแย่งชิงทรัพยากรในเบื้องหลังกับการโหลดหน้าจอแรก

หลังจากโหลดแล้ว EmojiCompat จะใช้ RAM ประมาณ 300 KB เพื่อเก็บข้อมูลเมตาของอีโมจิ