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();
|
}
|
}
|