Modern emojileri destekleyin

Standart emoji grubu her yıl yenilenen Emoji kullanımı arttıkça Unicode hızlı bir şekilde değiştirildi.

Uygulamanız internet içeriği görüntülüyorsa veya metin girişi sağlıyorsa en son emoji yazı tiplerinin desteklenmesini öneriyoruz. Aksi takdirde daha sonraki emojiler tofu (☐) adında küçük bir kare kutu veya yanlış oluşturulmuş başka bir metin emin olmanız gerekir.

Android 11 (API düzeyi 30) ve önceki sürümler emoji yazı tipini güncelleyemediğinden bunları gösteren uygulamalar manuel olarak güncellenmelidir.

Aşağıda modern emoji örnekleri verilmiştir.

Örnekler Sürüm
🫠 🫱🏼‍🫲🏿 🫰🏽 14.0 (Eylül 2021)
😶‍🌫️ 🧔🏻‍♀️ 🧑🏿‍❤️‍🧑🏾 13.1 (Eylül 2020)
🥲 🥷🏿 🐻‍❄️ 13.0 (Mart 2020)
🧑🏻‍🦰 🧑🏿‍🦯 👩🏻‍🤝‍👩🏼 12.1 (Ekim 2019)
🦩 🦻🏿 👩🏼‍🤝‍👩🏻 12.0 (Şubat 2019)

androidx.emoji2:emoji2 kitaplığı daha basit geriye dönük uyumluluk sağlar daha düşük Android sürümleri. emoji2 kitaplığı AppCompat kitaplığı için geçerlidir ve şunu gerektirmez: başka yapılandırmalar vardır.

Oluşturma özelliğinde emoji desteği

BOM Mart 2023 (Compose UI 1.4) en son emojileri destekler. sürümüne kadar, eski Android sürümleriyle geriye dönük uyumluluk da dahil olmak üzere API 21 Bu sayfada, modern emojilerin View sisteminde nasıl yapılandırılacağı açıklanmaktadır. Görüntüleyin Emoji'nin altındaki emojiler sayfasına göz atın.

Ön koşullar

Uygulamanızın yeni emojileri düzgün şekilde gösterdiğini onaylamak için uygulamayı bir cihazda başlatın Android 10 (API düzeyi 29) veya önceki sürümleri çalıştıran. Bu sayfada kullandığınız modern emojiler var görüntüleyebilirsiniz.

En yeni emojileri desteklemek için AppCompat'ı kullanın

AppCompat 1.4 sürümünde emoji desteği de bulunmaktadır.

AppCompat özelliğini kullanarak emojileri desteklemek için aşağıdakileri yapın:

  1. Modülünüzün AppCompat kitaplığı sürümüne bağlı olup olmadığını kontrol edin 1.4.0-alpha01 veya daha yüksek.

    build.gradle
    
    // Ensure version is 1.4.0-alpha01 or higher.
    implementation "androidx.appcompat:appcompat.$appcompatVersion"
    
  2. Metin gösteren tüm etkinliklerin AppCompatActivity sınıfını kullanır.

    Kotlin

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

    Java

    MyActivity.java
    
    class MyActivity extends AppCompatActivity {
    ...
    }
    
  3. Uygulamanızı Android 10 çalıştıran bir cihazda başlatarak entegrasyonunuzu test edin veya daha düşük bir değerde olacak ve aşağıdaki test dizesini görüntüleyecektir. Tüm karakterlerin doğru şekilde oluşturabilirsiniz.

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

Uygulamanız, şu sürümü kullanan tüm cihazlarda otomatik olarak geriye dönük uyumlu emojiler gösteriyor: Cihazlar gibi emoji2 uyumlu bir indirilebilir yazı tipi sağlayıcı sağlayın Google Play Hizmetleri tarafından desteklenir.

Uygulamanızda AppCompat kullanılıyorsa ancak tofu gösteriliyorsa (☐)

Bazı durumlarda uygulamanızda doğru emoji yerine tofu gösterilebilir. AppCompat kitaplığını eklediniz. Aşağıda olası açıklamalar ve çözümler.

Uygulamayı kısa süre önce güncellenen bir cihazda veya yeni bir emülatörde çalıştırıyorsunuz

Kullanılabilecek yazı tipi önbelleğe alma işlemlerini temizlemek için uygulamanın Google Play Hizmetleri verilerini temizleyin olması gerekir. Bu işlem genellikle birkaç saat sonra sorunu çözer.

Uygulama verilerini temizlemek için şunları yapın:

  1. Android destekli cihazınızda Ayarlar'ı açın.

  2. Uygulamalar ve bildirimler'e dokunun.

  3. Tüm uygulamaları göster'e veya Uygulama bilgileri'ne dokunun.

  4. Uygulamalar arasında gezinip Google Play Hizmetleri'ne dokunun.

  5. Depolama ve önbellek hakkında daha fazla bilgi edinin.

  6. Önbelleği temizle'ye dokunun.

Uygulamanızda AppCompat metinle ilgili bir sınıf kullanılmıyor

Bu durum, AppCompatActivity uzantısını uzatmazsanız veya bir örneklendirirseniz ortaya çıkabilir TextView gibi kodda görüntüleyin. Şunları kontrol edin:

  • Etkinliğin geçerlilik süresi AppCompatActivity tarihinde sona eriyor.
  • Görünümü kodda oluşturuyorsanız doğru AppCompat alt sınıf gibidir.

AppCompatActivity, bunun yerine otomatik olarak AppCompatTextView değerini şişirir TextView sağlar, böylece XML'nizi güncellemeniz gerekmez.

Test telefonu indirilebilir yazı tiplerini desteklemiyor

DefaultEmojiCompatConfig.create işlevinin null olmayan bir yapılandırma döndürdüğünü doğrulayın.

Daha önceki bir API düzeyindeki emülatör, Google Play Hizmetleri'ni yükseltmedi

Önceki API düzeyinde bir emülatör kullanırken yazı tipi sağlayıcıyı bulmak için emoji2 için Google Play hizmetlerini oluşturdu. Bunu yapmak için emülatörde Google Play Store'a giriş yapın.

Uyumlu bir sürümün yüklü olduğunu doğrulamak için aşağıdakileri yapın:

  1. Aşağıdaki komutu çalıştırın:

    adb shell dumpsys package com.google.android.gms | grep version
    
  2. versionCode değerinin 211200000 değerinden yüksek olup olmadığını kontrol edin.

AppCompat olmadan emoji desteği

Uygulamanız AppCompat içeremez. emoji2 doğrudan kullanılabilir. Bu daha fazla çalışma gerektirdiğinden bu yöntemi yalnızca uygulamanız AppCompat hizmetini kullanamıyorsa kullanın.

AppCompat kitaplığı olmadan emojileri desteklemek için aşağıdakileri yapın:

  1. Uygulamanızın build.gradle dosyasına emoji2 ve emoji2-views dosyalarını ekleyin.

    build.gradle
    
    def emojiVersion = "1.0.0-alpha03"
    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-views:$emojiVersion"
    

    emoji2-views modülü şunun alt sınıfları: Aşağıdakileri uygulayan TextView, Button ve EditText EmojiCompat. Kullanmama çünkü şu anda AppCompat içeren bir uygulamada EmojiCompat.

  2. XML ve kod olarak (TextView, EditText veya Button - kullanım EmojiTextView, EmojiEditText veya EmojiButton tıklayın.

    activity_main.xml
    
    <androidx.emoji2.widget.EmojiTextView ... />
    <androidx.emoji2.widget.EmojiEditText ... />
    <androidx.emoji2.widget.EmojiButton ... />
    

    emoji2 modülünü dahil ettiğinizde sistem, varsayılan olarak indirilebilen yazı tipini yüklemek için yazı tipi sağlayıcısı otomatik olarak kısa bir süre içinde güncellenir. Sıra No: ek yapılandırma gerekiyor.

  3. Entegrasyonunuzu test etmek için uygulamanızı Android 11 veya sonraki bir sürümün yüklü olduğu bir cihazda başlatın. değerini düşürebilir ve aşağıdaki test dizelerini görüntüleyebilirsiniz. Tüm karakterlerin doğru şekilde oluşturabilirsiniz.

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

EmojiCompat'ı widget'lar olmadan kullan

EmojiCompat, şu işlemler için EmojiSpan kullanıyor: doğru resimler oluşturmak için kullanın. Dolayısıyla, sisteme girilen herhangi bir CharSequence nesnesini EmojiSpan nesne içeren Spanned nesne. EmojiCompat sınıfı, CharSequences dönüşümünü yapmak için process() yöntemini sağlar Spanned örneğe dağıtıldı. Bu yöntemi kullanarak process() öğesini ve sonuçları önbelleğe alır. Bu da uygulamanızın performansını artırır.

Kotlin

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

Java

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

Giriş yöntemi düzenleyicileri için EmojiCompat'ı kullan

EmojiCompat sınıfı, klavyelerin uygulama tarafından desteklenen emojiyi oluşturmasını sağlar. daha fazla bilgi edindiniz. Giriş yöntemi düzenleyicileri (IME'ler) getEmojiMatch() yönteminde bir EmojiCompat örneğinin bir sorgu oluşturup oluşturmadığını kontrol etmek için emoji'ye dokunun. Bu yöntem bir CharSequence ifadesi gösterilir ve EmojiCompat emojiyi algılayıp oluşturabiliyorsa true değerini döndürür.

Klavye, uygulamanın desteklediği EmojiCompat sürümünü de kontrol edebilir Palette hangi emojinin oluşturulacağını belirleyin. Sürümü kontrol etmek için klavye varsa, klavyedeki EditorInfo.extras grup:

  • EDITOR_INFO_METAVERSION_KEY: uygulamanın kullandığı emoji meta verilerinin sürümünü temsil eder. Bu anahtar yoksa uygulama EmojiCompat kullanmıyor demektir.
  • EDITOR_INFO_REPLACE_ALL_KEY: anahtar varsa ve true olarak ayarlanmışsa uygulama Sistemde mevcut olsalar bile tüm emojilerin değiştirilmesi için EmojiCompat.

Örnek yapılandırmanın nasıl yapılacağı hakkında daha fazla bilgi EmojiCompat değerleridir.

Özel görünümlerde emoji kullanma

Uygulamanızda kullanılan özel görünümler TextView öğesinin doğrudan veya dolaylı alt sınıfları; örneğin, Button, Switch veya EditText (ve bu görünümlerde kullanıcı tarafından oluşturulanlar gösterilebilir) her biri, uygulamayı EmojiCompat.

İşlem, uygulamanızın AppCompat kitaplığını kullanıp kullanmadığına bağlı olarak değişiklik gösterir.

AppCompat ile uygulamalar için özel görünümler ekleme

Uygulamanız AppCompat kullanıyorsaAppCompat ele alacağız. Aşağıdaki tabloyu, AppCompat genelindeki görüntüleme sayınızı artırın:

Uzatmak yerine... Uzat
TextView AppCompatTextView
EditText AppCompatEditText
ToggleButton AppCompatToggleButton
Switch SwitchCompat
Button AppCompatButton
CheckedTextView AppCompatCheckedTextView
RadioButton AppCompatRadioButton
CheckBox AppCompatCheckBox
AutoCompleteTextView AppCompatAutoCompleteTextView
MultiAutoCompleteTextView AppCompatMultiAutoCompleteTextView

AppCompat olmayan uygulamalar için özel görünümler ekleme

Uygulamanızda AppCompat kullanılmıyorsa şuradaki görünüm entegrasyon yardımcılarını kullanın: Özel görünümlerde kullanılmak üzere tasarlanmış emoji2-views-helper modülü. Bu AppCompat kitaplığının emoji desteğini uygulamak için kullandığı yardımcılardır.

Alan adını kullanmayan uygulamalarda özel görünümleri desteklemek için aşağıdaki adımları AppCompat

  1. emoji2-views-helper kitaplığını ekleyin:

    implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
    
  2. Dahil etmek için talimatları uygulayın: EmojiTextViewHelper veya EmojiEditTextHelper dönüşüm elde edebilirsiniz.

  3. Uygulamanızı Android 10 çalıştıran bir cihazda başlatarak entegrasyonunuzu test edin veya daha düşük bir değerde olacak ve aşağıdaki test dizesini görüntüleyecektir. Tüm karakterlerin doğru şekilde oluşturabilirsiniz.

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

Emoji2'nin kullanımı için isteğe bağlı özellikler

emoji2 kitaplığını uygulamanıza ekledikten sonra isteğe bağlı özellikleri için de kullanılabilir.

Emoji2'yi farklı bir yazı tipi veya indirilebilir yazı tipi sağlayıcı kullanacak şekilde yapılandırın

emoji2 öğesini farklı bir yazı tipi veya indirilebilir yazı tipi sağlayıcı kullanacak şekilde yapılandırmak için: şu:

  1. Şunu devre dışı bırak: EmojiCompatInitializer aşağıdaki kodu manifest dosyanıza ekleyerek:

    <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. Aşağıdakilerden birini yapın:

ziyaret edin.

EmojiCompat davranışınızı değiştirin

EmojiCompat öğesini değiştirmek için EmojiCompat.Config örneği kullanabilirsiniz gösterir.

En önemli yapılandırma seçeneği setMetadataLoadStrategy() EmojiCompat, yazı tipini ne zaman yüklediğini kontrol eder. Yazı tipi yükleme işlemi hemen başlar EmojiCompat.load() çağrılır ve bu, gerekli indirmeleri tetikler. İlgili içeriği oluşturmak için kullanılan uygulamanız, yazı tipi indirme işlemi için bir iş parçacığı oluşturmaz.

LOAD_STRATEGY_MANUAL, EmojiCompat.load() çağrılacağı zamanı kontrol etmenizi sağlar ve LOAD_STRATEGY_DEFAULT çağrısında yüklemenin eşzamanlı olarak başlamasını sağlar: EmojiCompat.init().

Çoğu uygulama, mesaj dizisini ve zamanlamayı kontrol edebilmek için LOAD_STRATEGY_MANUAL kullanır görebilirsiniz. Uygulamanız, ilk ekran görüntülenene kadar başlatma gecikmesi gibi durumları ortadan kaldırın. EmojiCompatInitializer bunu takip ediyor alıştırma yapar ve emoji yazı tipini yüklemeyi ilk ekran devam ettirilene kadar erteler.

yapılandırma:

  • setReplaceAll(): EmojiCompat tarafından bulunan tüm emojileri örneklerle değiştirip değiştirmeyeceğini belirler / EmojiSpan. EmojiCompat, sistemin varsayılan olarak emoji oluşturulduğunda bu emojinin yerine geçmez. true olarak ayarlandığında EmojiCompat, tüm emojileri EmojiSpan nesneyle değiştirir.
  • setEmojiSpanIndicatorEnabled(): EmojiCompat öğesinin, bir emojiyi EmojiSpan ile değiştirip değiştirmediğini gösterir nesnesini tanımlayın. true olarak ayarlandığında EmojiCompat, EmojiSpan. Bu yöntem çoğunlukla hata ayıklama amacıyla kullanılır.
  • setEmojiSpanIndicatorColor: rengi bir EmojiSpan belirtecek şekilde ayarlar. Varsayılan değer: GREEN.
  • registerInitCallback(): bir uygulamaya EmojiCompat başlatma işleminin durumu hakkında bilgi verir.

İlk kullanıma hazırlama işleyicileri ekleyin

EmojiCompat ve EmojiCompat.Config sınıfları şunları sağlıyor: registerInitCallback() ve unregisterInitCallback() ilk kullanıma hazırlama geri çağırmalarının nasıl kaydedileceğini ve iptal edilmesini sağlayacak yöntemleri keşfedin. Uygulamanız bunları kullanıyor şurada emojiyi işlemeden önce EmojiCompat başlatılana kadar beklemek için geri çağırmalar yapın: bir arka plan ileti dizisinde veya özel görünümde sunulur.

Bu yöntemleri kullanmak için EmojiCompat.InitCallback sınıfını kullanır. Bu yöntemleri çağırın ve EmojiCompat.InitCallback sınıf. Başlatma başarılı olduğunda EmojiCompat sınıfı onInitialized() yöntemidir. Kitaplık başlatılamazsa EmojiCompat sınıfı onFailed() yöntemidir.

Başlatma durumunu istediğiniz zaman kontrol etmek için şunu arayın: getLoadState() yöntemidir. Bu yöntem aşağıdaki değerlerden birini döndürür: LOAD_STATE_LOADING LOAD_STATE_SUCCEEDED, veya LOAD_STATE_FAILED.

Emoji2 ile gruplandırılmış yazı tiplerini destekleyin

Bir emoji yazı tipini uygulamanızda paket haline getirmek için emoji2-bundled yapısını kullanabilirsiniz. Ancak NotoColorEmoji yazı tipi 10 MB'ın üzerinde olduğu için kesinlikle Uygulamanızın mümkün olduğunda indirilebilir yazı tiplerini kullanmasını öneririz. İlgili içeriği oluşturmak için kullanılan emoji2-bundled yapısı, şunları desteklemeyen cihazlardaki uygulamalar için tasarlanmıştır: indirilebilir yazı tipleri.

emoji2-bundled yapısını kullanmak için aşağıdakileri yapın:

  1. emoji2-bundled ve emoji2 yapılarını dahil et:

    implementation "androidx.emoji2:emoji2:$emojiVersion"
    implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
    
  2. Paket halinde sunulan yapılandırmayı kullanmak için emoji2 hizmetini yapılandırın:

    Kotlin

    EmojiCompat.init(BundledEmojiCompatConfig(context))
    

    Java

    EmojiCompat.init(new BundledEmojiCompatConfig(context));
    
  3. Aşağıdaki adımları uygulayarak entegrasyonu test edin: AppCompat olan veya olmayan emojicompat. Test dizesinin düzgün şekilde görüntülendiğinden emin olun.

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

Otomatik EmojiCompat yapılandırmasının etkisi

Sistem, başlangıç kitaplığını kullanarak varsayılan yapılandırmayı uygular. EmojiCompatInitializer ve DefaultEmojiCompatConfig

Başlatıcı, uygulamanızdaki ilk etkinlik devam ettirildiğinde emoji planlar Yazı tipi yükleniyor. Bu kısa gecikme, uygulamanızın ilk içeriğini bir arka plan ileti dizisinde yazı tipi yüklenmesinden kaynaklanan olası gecikme.

DefaultEmojiCompatConfig, sistem tarafından yüklenmiş indirilebilir bir yazı tipi arar Google Play gibi EmojiCompat arayüzünü uygulayan sağlayıcı kullanıma sunuyoruz. Google Play Hizmetleri tarafından desteklenen cihazlarda bu işlem, yazı tipini Google Play Hizmetleri.

Başlatıcı, emoji yazı tipini ve yazı tipini yüklemek için bir arka plan ileti dizisi oluşturur indirme işleminin tamamlanması 10 saniye sürebilir. Yazı tipi bir arka plan iş parçacığının indirme işlemini tamamlaması yaklaşık 150 milisaniye EmojiCompat uygulamasını başlat.

Devre dışı bıraksanız bile EmojiCompat uygulamasının başlatılmasını ertele EmojiCompatInitializer. E-posta adresinizi manuel olarak EmojiCompat, gösterildikten sonra EmojiCompat.load() numaralı telefonu ara ilk ekranla arka plan çakışmasını önlemek için uygulamanızın devam edebilir.

Yükleme işleminden sonra, EmojiCompat emojiyi tutmak için yaklaşık 300 KB RAM kullanır meta verilerdir.