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

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

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 เป็นการขึ้นต่อกันของไลบรารี AppCompat และไม่ต้องมีการกำหนดค่าเพิ่มเติมเพื่อให้ทำงานได้

การรองรับอีโมจิในฟีเจอร์เขียน

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

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

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

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