Home | History | Annotate | Download | only in kotlinApp
      1 Android EmojiCompat Sample (Kotlin)
      2 ===================================
      3 
      4 This sample demonstrates usage of EmojiCompat support library. You can use this library
      5 to prevent your app from showing missing emoji characters in the form of tofu (). You
      6 can use either bundled or downloadable emoji fonts. This sample shows both usages.
      7 
      8 Introduction
      9 ------------
     10 
     11 The EmojiCompat support library aims to keep Android devices up to date with the latest emoji. It
     12 prevents your app from showing missing emoji characters in the form of , which indicates that your
     13 device does not have a font to display the text. By using the EmojiCompat support library, your app
     14 users do not need to wait for Android OS updates to get the latest emoji.
     15 
     16 For further detail, read [Emoji Compatibility][1] documentation.
     17 
     18 ### Configuration
     19 
     20 You need to first initialize EmojiCompat to load the metadata and the typeface. You can use either
     21 bundled or downloadable fonts.
     22 
     23 #### Use downloadable fonts
     24 
     25 ***You need the beta version of Google Play Services to use this feature.*** Join
     26 [Google Play Services Public Beta Program][4] and make sure you have v11 installed on your device
     27 running Android O Developer Preview 2.
     28 
     29 For the downloadable font configuration, you need to create an instance of the [FontRequest][5]
     30 class, and provide the font provider authority, the font provider package, the font query, and a
     31 list of set of hashes for the certificates. For more information about FontRequest, refer to the
     32 Downloadable Fonts documentation. You can then create an instance of
     33 [FontRequestEmojiCompatConfig][6] and pass it to EmojiCompat.init().
     34 
     35 ```java
     36 final FontRequest fontRequest = new FontRequest(
     37                     "com.google.android.gms.fonts",
     38                     "com.google.android.gms",
     39                     "Noto Color Emoji Compat",
     40                     R.array.com_google_android_gms_fonts_certs);
     41 EmojiCompat.init(new FontRequestEmojiCompatConfig(getApplicationContext(), fontRequest)
     42                     .setReplaceAll(true)
     43                     .registerInitCallback(new EmojiCompat.InitCallback() {
     44                         @Override
     45                         public void onInitialized() {
     46                             Log.i(TAG, "EmojiCompat initialized");
     47                         }
     48 
     49                         @Override
     50                         public void onFailed(@Nullable Throwable throwable) {
     51                             Log.e(TAG, "EmojiCompat initialization failed", throwable);
     52                         }
     53                     });)
     54 ```
     55 
     56 #### Use bundled font
     57 
     58 In order the use the bundled font, call init() method of [EmojiCompat][2] with an instance of
     59 [BundledEmojiCompatConfig][3].
     60 
     61 ### Use EmojiCompat
     62 
     63 #### Built-in views
     64 
     65 The easiest way to use EmojiCompat in your layout, is to use [EmojiAppCompatTextView][7],
     66 [EmojiAppCompatEditText][8], or [EmojiAppCompatButton][9]. You can use them in your layout XMLs or
     67 code. You can just set any text containing emoji and the widgets handle the rest.
     68 
     69 #### With regular TextViews
     70 
     71 If you want to use EmojiCompat with a regular TextView, retrieve an instance of EmojiCompat by
     72 calling EmojiCompat.get() and call registerInitCallback method. You can pass an
     73 EmojiCompat.InitCallback and use the EmojiCompat#process() method there to transform emoji text into
     74 a backward-compatible format.
     75 
     76 #### With custom TextViews
     77 
     78 If you want to use EmojiCompat in your custom TextView, you can create an instance of
     79 [EmojiTextViewHelper][10] and use it in some overridden methods, namely setFilters and setAllCaps.
     80 [CustomTextView.java][11] shows what to do inside them.
     81 
     82 [1]: https://developer.android.com/preview/features/emoji-compat.html
     83 [2]: https://developer.android.com/reference/android/support/text/emoji/EmojiCompat.html
     84 [3]: https://developer.android.com/reference/android/support/text/emoji/bundled/BundledEmojiCompatConfig.html
     85 [4]: https://developers.google.com/android/guides/beta-program
     86 [5]: https://developer.android.com/reference/android/support/v4/provider/FontRequest.html
     87 [6]: https://developer.android.com/reference/android/support/text/emoji/FontRequestEmojiCompatConfig.html
     88 [7]: https://developer.android.com/reference/android/support/text/emoji/widget/EmojiAppCompatTextView.html
     89 [8]: https://developer.android.com/reference/android/support/text/emoji/widget/EmojiAppCompatEditText.html
     90 [9]: https://developer.android.com/reference/android/support/text/emoji/widget/EmojiAppCompatButton.html
     91 [10]: https://developer.android.com/reference/android/support/text/emoji/widget/EmojiCompatViewHelper.html
     92 [11]: https://github.com/googlesamples/android-EmojiCompat/blog/master/app/src/main/java/com/example/android/emojicompat/CustomTextView.java
     93 
     94 Pre-requisites
     95 --------------
     96 
     97 - Android SDK 25
     98 - Android Build Tools v25.0.3
     99 - Android Support Repository
    100 
    101 Screenshots
    102 -------------
    103 
    104 <img src="screenshots/1-main.png" height="400" alt="Screenshot"/> 
    105 
    106 Getting Started
    107 ---------------
    108 
    109 This sample uses the Gradle build system. To build this project, use the
    110 "gradlew build" command or use "Import Project" in Android Studio.
    111 
    112 Support
    113 -------
    114 
    115 - Google+ Community: https://plus.google.com/communities/105153134372062985968
    116 - Stack Overflow: http://stackoverflow.com/questions/tagged/android
    117 
    118 If you've found an error in this sample, please file an issue:
    119 https://github.com/googlesamples/android-EmojiCompat
    120 
    121 Patches are encouraged, and may be submitted by forking this project and
    122 submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details.
    123 
    124 License
    125 -------
    126 
    127 Copyright 2017 The Android Open Source Project, Inc.
    128 
    129 Licensed to the Apache Software Foundation (ASF) under one or more contributor
    130 license agreements.  See the NOTICE file distributed with this work for
    131 additional information regarding copyright ownership.  The ASF licenses this
    132 file to you under the Apache License, Version 2.0 (the "License"); you may not
    133 use this file except in compliance with the License.  You may obtain a copy of
    134 the License at
    135 
    136 http://www.apache.org/licenses/LICENSE-2.0
    137 
    138 Unless required by applicable law or agreed to in writing, software
    139 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    140 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
    141 License for the specific language governing permissions and limitations under
    142 the License.
    143