55 lines
2.0 KiB
Java
55 lines
2.0 KiB
Java
package eu.siacs.conversations.ui.service;
|
||
|
||
import android.content.Context;
|
||
import android.os.Build;
|
||
import android.util.Log;
|
||
|
||
import androidx.core.provider.FontRequest;
|
||
import androidx.emoji.text.EmojiCompat;
|
||
import androidx.emoji.text.FontRequestEmojiCompatConfig;
|
||
|
||
import eu.siacs.conversations.Config;
|
||
import eu.siacs.conversations.R;
|
||
|
||
public class EmojiService {
|
||
|
||
|
||
private final EmojiCompat.InitCallback initCallback = new EmojiCompat.InitCallback() {
|
||
@Override
|
||
public void onInitialized() {
|
||
super.onInitialized();
|
||
Log.d(Config.LOGTAG, "EmojiService succeeded in loading fonts");
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onFailed(Throwable throwable) {
|
||
super.onFailed(throwable);
|
||
Log.d(Config.LOGTAG, "EmojiService failed to load fonts", throwable);
|
||
}
|
||
};
|
||
|
||
private final Context context;
|
||
|
||
public EmojiService(Context context) {
|
||
this.context = context;
|
||
}
|
||
|
||
public void init() {
|
||
final FontRequest fontRequest = new FontRequest(
|
||
"com.google.android.gms.fonts",
|
||
"com.google.android.gms",
|
||
"Noto Color Emoji Compat",
|
||
R.array.font_certs);
|
||
FontRequestEmojiCompatConfig fontRequestEmojiCompatConfig = new FontRequestEmojiCompatConfig(context, fontRequest);
|
||
fontRequestEmojiCompatConfig.registerInitCallback(initCallback);
|
||
//On recent Androids we assume to have the latest emojis
|
||
//there are some annoying bugs with emoji compat that make it a safer choice not to use it when possible
|
||
// a) when using the ondemand emoji font (play store) flags don’t work
|
||
// b) the text preview has annoying glitches when the cut of text contains emojis (the emoji will be half visible)
|
||
// c) can trigger a hardware rendering bug https://issuetracker.google.com/issues/67102093
|
||
fontRequestEmojiCompatConfig.setReplaceAll(Build.VERSION.SDK_INT < Build.VERSION_CODES.O);
|
||
EmojiCompat.init(fontRequestEmojiCompatConfig);
|
||
}
|
||
|
||
} |