package com.zztrapp.zztrapp.app;

import android.app.Application;
import android.content.Context;

import androidx.multidex.MultiDex;

import com.netease.yunxin.kit.meeting.sdk.NECallback;
import com.netease.yunxin.kit.meeting.sdk.NEMeetingError;
import com.netease.yunxin.kit.meeting.sdk.NEMeetingKit;
import com.netease.yunxin.kit.meeting.sdk.NEMeetingKitConfig;
import com.netease.yunxin.kit.meeting.sdk.config.NEForegroundServiceConfig;
import com.zztrapp.zztrapp.R;
import com.zztrapp.zztrapp.constant.Constant;
import com.zztrapp.zztrapp.utilcode.klogs.KLog;
import com.zztrapp.zztrapp.utilcode.util.Utils;

/**
 * Describe
 * Created by Bby on 2020/5/18
 * Email bby0856@163.com
 */
public class MyApp extends Application {

    //Bugly 如果使用了MultiDex，建议通过Gradle的“multiDexKeepFile”配置等方式把Bugly的类放到主Dex，另外建议在Application类的"attachBaseContext"方法中主动加载非主dex
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Utils.init(this);//初始化工具类
        KLog.init(true, "bby");

        NEMeetingKitConfig config = new NEMeetingKitConfig();
        config.appKey = Constant.APP_KEY; //应用AppKey
        config.appName = getResources().getString(R.string.app_name); //应用AppName
        //配置会议时显示前台服务
        NEForegroundServiceConfig foregroundServiceConfig = new NEForegroundServiceConfig();
        foregroundServiceConfig.contentTitle = getResources().getString(R.string.app_name);
        config.foregroundServiceConfig = foregroundServiceConfig;
        NEMeetingKit.getInstance().initialize(this, config, new NECallback<Void>() {
            @Override
            public void onResult(int resultCode, String resultMsg, Void result) {
                if (resultCode == NEMeetingError.ERROR_CODE_SUCCESS) {
                    //初始化成功
                    KLog.e("网易云会议-初始化成功");
                } else {
                    //初始化失败
                    KLog.e("网易云会议-初始化成功");
                }
            }
        });


//        QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
//            @Override
//            public void onCoreInitFinished() {
//                // 内核初始化完成，可能为系统内核，也可能为系统内核
//                KLog.e(" 内核初始化完成，可能为系统内核，也可能为系统内核");
//            }
//
//            /**
//             * 预初始化结束
//             * 由于X5内核体积较大，需要依赖网络动态下发，所以当内核不存在的时候，默认会回调false，此时将会使用系统内核代替
//             * @param isX5 是否使用X5内核
//             */
//            @Override
//            public void onViewInitFinished(boolean isX5) {
//                KLog.e(" isX5"+isX5);
//            }
//        });
//        QbSdk.setDownloadWithoutWifi(true);
//        // 在调用TBS初始化、创建WebView之前进行如下配置
//        HashMap map = new HashMap();
//        map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
//        map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
//        QbSdk.initTbsSettings(map);

//        // 在调用TBS初始化、创建WebView之前进行如下配置
//        HashMap map = new HashMap();
//        map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
//        map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
//        QbSdk.initTbsSettings(map);
//
//        /* 设置允许移动网络下进行内核下载。默认不下载，会导致部分一直用移动网络的用户无法使用x5内核 */
//        QbSdk.setDownloadWithoutWifi(true);
//
//        /* SDK内核初始化周期回调，包括 下载、安装、加载 */
//        QbSdk.setTbsListener(new TbsListener() {
//
//            /**
//             * @param stateCode 110: 表示当前服务器认为该环境下不需要下载
//             */
//            @Override
//            public void onDownloadFinish(int stateCode) {
//                KLog.e("QbSdk:"+ "onDownloadFinished: " + stateCode);
//            }
//
//            /**
//             * @param stateCode 200、232安装成功
//             */
//            @Override
//            public void onInstallFinish(int stateCode) {
//                KLog.e("QbSdk:"+"onInstallFinished: " + stateCode);
//            }
//
//            /**
//             * 首次安装应用，会触发内核下载，此时会有内核下载的进度回调。
//             * @param progress 0 - 100
//             */
//            @Override
//            public void onDownloadProgress(int progress) {
//                KLog.e("QbSdk:" +"Core Downloading: " + progress);
//            }
//        });
//
//        /* 此过程包括X5内核的下载、预初始化，接入方不需要接管处理x5的初始化流程，希望无感接入 */
//        QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
//            @Override
//            public void onCoreInitFinished() {
//                // 内核初始化完成，可能为系统内核，也可能为系统内核
//            }
//
//            /**
//             * 预初始化结束
//             * 由于X5内核体积较大，需要依赖wifi网络下发，所以当内核不存在的时候，默认会回调false，此时将会使用系统内核代替
//             * 内核下发请求发起有24小时间隔，卸载重装、调整系统时间24小时后都可重置
//             * @param isX5 是否使用X5内核
//             */
//            @Override
//            public void onViewInitFinished(boolean isX5) {
//                KLog.e("QbSdk:"+ "onViewInitFinished: " + isX5);
//            }
//        });
    }


}
