rk
3 天以前 4a8ff39b0fab0627ef8f7459587d514cc01c3676
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/MApplication.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,240 @@
package com.doumee.keyCabinet;
import android.app.Application;
import android.content.Context;
import android.hardware.usb.UsbDevice;
import android.net.Uri;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.doumee.keyCabinet.bean.DevConfigBean;
import com.doumee.keyCabinet.bean.LoginBean;
import com.doumee.keyCabinet.utils.CrashHandler;
import com.bumptech.glide.Glide;
import com.doumee.keyCabinet.utils.TimeUtils;
import com.doumee.lib_coremodel.base.CoreConfig;
import com.doumee.lib_coremodel.http.other.OkHttpNetworkFetcher;
import com.doumee.lib_coremodel.util.SpUtil;
import com.doumee.keyCabinet.bean.MemberBean;
import com.doumee.keyCabinet.utils.LanguageUtil;
import com.facebook.fresco.helper.Phoenix;
import com.facebook.imagepipeline.core.ImagePipelineConfig;
import com.facebook.imagepipeline.listener.RequestListener;
import com.facebook.imagepipeline.listener.RequestLoggingListener;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.FormatStrategy;
import com.orhanobut.logger.Logger;
import com.orhanobut.logger.PrettyFormatStrategy;
import com.scwang.smart.refresh.footer.ClassicsFooter;
import com.scwang.smart.refresh.header.ClassicsHeader;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.scwang.smart.refresh.layout.api.RefreshFooter;
import com.scwang.smart.refresh.layout.api.RefreshHeader;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.DefaultRefreshFooterCreator;
import com.scwang.smart.refresh.layout.listener.DefaultRefreshHeaderCreator;
import com.yuyh.library.imgsel.ISNav;
import java.io.File;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import dagger.hilt.android.HiltAndroidApp;
import okhttp3.OkHttpClient;
import timber.log.Timber;
@HiltAndroidApp
public class MApplication extends Application {
    public static Context mContext;
    private static CountDownTimer countTimer;
    public static int nLan = 0;//中文用0,其他用1
    @Override
    public void onCreate() {
        super.onCreate();
        mContext=this;
        //初始化日志打印
        FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
                .showThreadInfo(false)      //(可选)是否显示线程信息。 é»˜è®¤å€¼ä¸ºtrue
                .methodCount(2)               // ï¼ˆå¯é€‰ï¼‰è¦æ˜¾ç¤ºçš„æ–¹æ³•行数。 é»˜è®¤2
                .methodOffset(0)               // ï¼ˆå¯é€‰ï¼‰è®¾ç½®è°ƒç”¨å †æ ˆçš„函数偏移值,0的话则从打印该Log的函数开始输出堆栈信息,默认是0
                //.logStrategy(customLog)  //(可选)更改要打印的日志策略。 é»˜è®¤LogCat
                .tag("Logger")
                //(可选)每个日志的全局标记。 é»˜è®¤PRETTY_LOGGER(如上图)
                .build();
        Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy){
            @Override
            public boolean isLoggable(int priority, @Nullable String tag) {
                return BuildConfig.DEBUG;//控制是否输出日志
            }
        });
        Timber.plant(new Timber.DebugTree() {
            @Override protected void log(int priority, String tag, String message, Throwable t) {
                if(BuildConfig.DEBUG){
                    System.out.println(TimeUtils.getNowDate()+"    "+tag+" ===> "+message);
                    //Logger.log(priority, tag, message, t);
                }
            }
        });
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
                return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 è´å¡žå°”é›·è¾¾Header
            }
        });
        //设置全局的Footer构建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
            @Override
            public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                //指定为经典Footer,默认是 BallPulseFooter
                return new ClassicsFooter(context).setDrawableSize(20);
            }
        });
        // è‡ªå®šä¹‰å›¾ç‰‡åŠ è½½å™¨
        ISNav.getInstance().init(new com.yuyh.library.imgsel.common.ImageLoader() {
            @Override
            public void displayImage(Context context, String path, ImageView imageView) {
                Glide.with(context).load(Uri.fromFile(new File(path))).into(imageView);
            }
        });
        initFresco();
        SpUtil.init(this);
        CoreConfig.nomalPicId=R.mipmap.ic_vipimg;
        CoreConfig.nomalHeadPicId=R.mipmap.ic_vipimg;
        addCrash();
        setLanguage();
    }
    /**
     * è®¾ç½®è¯­è¨€
     */
    private void setLanguage() {
        String language = SpUtil.getString("language");
        if(TextUtils.isEmpty(language)){
            return;
        }
        LanguageUtil.changeAppLanguage(this,language);
    }
    private void initFresco() {
        Set<RequestListener> requestListeners = new HashSet<>();
        requestListeners.add(new RequestLoggingListener());
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .build();
        ImagePipelineConfig imagePipelineConfig = new com.facebook.fresco.helper.config.PhoenixConfig.Builder(this)
                .setNetworkFetcher(new OkHttpNetworkFetcher(okHttpClient))
                .setRequestListeners(requestListeners)
                .build();
        Phoenix.init(this, imagePipelineConfig);
    }
    public static interface CountTimerCallBack{
        void onFinish();
        void onTick(long millisUntilFinished);
    }
    private static CountTimerCallBack timerCallBack;
    public static void initCountTimer(boolean isToGuild,CountTimerCallBack callBack){
        if(countTimer!=null){
            countTimer.cancel();
        }
        if(timerCallBack!=null){
            timerCallBack = null;
        }
        if(configBean==null){
            return;
        }
        timerCallBack = callBack;
        countTimer = new CountDownTimer(60*1000, 1*1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                //Timber.tag("CountTimer==>").d(millisUntilFinished+"");
                if (timerCallBack!=null) {
                    timerCallBack.onTick(millisUntilFinished);
                }
            }
            @Override
            public void onFinish() {
                Timber.tag("CountTimer==>").d("onFinish");
                if (timerCallBack!=null) {
                    timerCallBack.onFinish();
                }
            }
        };
    }
    public static void startCountTimer(){
        if(countTimer!=null){
            countTimer.start();
        }
    }
    private void addCrash(){
        try {
            CrashHandler crashHandler = CrashHandler.getInstance();
            crashHandler.init(this);
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("错误日志4"+e.getMessage());
        }
    }
    public static void stopCountTimer() {
        if(countTimer!=null){
            countTimer.cancel();
        }
    }
    private static DevConfigBean configBean;
    public static void saveConfigBean(DevConfigBean bean){
        configBean = bean;
    }
    public static DevConfigBean getConfigBean(){
        if(configBean==null){
            configBean = new DevConfigBean();
        }
        return configBean;
    }
    private static UsbDevice customDevice;
    public static UsbDevice getUsbDevice() {
        return customDevice;
    }
    public static void setUsbDevice(UsbDevice device) {
        customDevice = device;
    }
    private static LoginBean loginBean;
    public static LoginBean getLoginBean() {
        if(loginBean==null){
            loginBean = new LoginBean();
        }
        return loginBean;
    }
    public static void setLoginBean(LoginBean cookie) {
        MApplication.loginBean = cookie;
    }
    private static Random random;
    public static boolean nextBoolean(){
        if(random==null){
            random = new Random();
        }
        return random.nextBoolean();
    }
}