apk(点击下载) / StickerManager.java


package com.netease.nim.uikit.business.session.emoji;

import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.common.util.C;
import com.netease.nim.uikit.common.util.file.FileUtil;
import com.netease.nim.uikit.common.util.log.sdk.wrapper.AbsNimLog;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class StickerManager {
    private static final String CATEGORY_AJMD = "ajmd";
    private static final String CATEGORY_LT = "lt";
    private static final String CATEGORY_XXY = "xxy";
    private static final String TAG = "StickerManager";
    private static StickerManager instance;
    private List<StickerCategory> stickerCategories = new ArrayList();
    private Map<String, StickerCategory> stickerCategoryMap = new HashMap();
    private Map<String, Integer> stickerOrder = new HashMap(3);

    public StickerManager() {
        initStickerOrder();
        loadStickerCategory();
    }

    public static StickerManager getInstance() {
        if (instance == null) {
            instance = new StickerManager();
        }
        return instance;
    }

    private int getStickerOrder(String str) {
        if (this.stickerOrder.containsKey(str)) {
            return this.stickerOrder.get(str).intValue();
        }
        return 100;
    }

    private void initStickerOrder() {
        this.stickerOrder.put(CATEGORY_AJMD, 1);
        this.stickerOrder.put(CATEGORY_XXY, 2);
        this.stickerOrder.put(CATEGORY_LT, 3);
    }

    private boolean isSystemSticker(String str) {
        return CATEGORY_XXY.equals(str) || CATEGORY_AJMD.equals(str) || CATEGORY_LT.equals(str);
    }

    private void loadStickerCategory() {
        try {
            String[] list = NimUIKit.getContext().getResources().getAssets().list("sticker");
            for (String str : list) {
                if (!FileUtil.hasExtentsion(str)) {
                    StickerCategory stickerCategory = new StickerCategory(str, str, true, getStickerOrder(str));
                    this.stickerCategories.add(stickerCategory);
                    this.stickerCategoryMap.put(str, stickerCategory);
                }
            }
            Collections.sort(this.stickerCategories, new Comparator<StickerCategory>() {
                /* class com.netease.nim.uikit.business.session.emoji.StickerManager.AnonymousClass1 */

                public int compare(StickerCategory stickerCategory, StickerCategory stickerCategory2) {
                    return stickerCategory.getOrder() - stickerCategory2.getOrder();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public synchronized List<StickerCategory> getCategories() {
        return this.stickerCategories;
    }

    public synchronized StickerCategory getCategory(String str) {
        return this.stickerCategoryMap.get(str);
    }

    public String getStickerUri(String str, String str2) {
        StickerCategory category = getInstance().getCategory(str);
        if (category == null || !isSystemSticker(str)) {
            return null;
        }
        if (!str2.contains(C.FileSuffix.PNG)) {
            str2 = str2 + C.FileSuffix.PNG;
        }
        return "file:///android_asset/" + ("sticker/" + category.getName() + "/" + str2);
    }

    public void init() {
        AbsNimLog.i(TAG, "Sticker Manager init...");
    }
}