doum
6 天以前 2b287056e2f59518888d05a1bbc7e5a55fbd84d5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
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.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.ConfigBean;
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.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(configBean.getBackHomeTime()*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 ConfigBean configBean;
    public static void saveConfigBean(ConfigBean bean){
        configBean = bean;
    }
 
    public static ConfigBean getConfigBean(){
        if(configBean==null){
            configBean = new ConfigBean();
        }
        return configBean;
    }
 
    private static MemberBean memberBean;
    public static void saveMemberBean(MemberBean bean){
        memberBean = bean;
    }
 
    public static MemberBean getMemberBean(){
        if(memberBean==null){
            memberBean = new MemberBean();
        }
        return memberBean;
    }
 
    private static UsbDevice customDevice;
 
    public static UsbDevice getUsbDevice() {
        return customDevice;
    }
 
    public static void setUsbDevice(UsbDevice device) {
        customDevice = device;
    }
 
    private static String cookie;
 
    public static String getCookie() {
        return cookie;
    }
 
    public static void setCookie(String cookie) {
        MApplication.cookie = cookie;
    }
}