MyApplication.java 源代码


package base;

import activity.cloud.utils.BackgroundTasks;
import activity.live.LiveViewActivity;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.os.Process;
import android.support.multidex.MultiDex;
import android.util.Log;
import bean.CameraBean;
import bean.MyCamera;
import com.hichip.sdk.HiManageLib;
import com.hichip.system.HiSystemValue;
import common.HiDataValue;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.List;
import main.GroMore.TTAdManagerHolder;
import main.MainActivity;
import main.NVR.live.LiveViewNVRActivity;
import main.NVR.live.Single.LiveViewSingleNVRActivity;
import main.live4.LandLiveActivity;
import main.live4.OSLandLiveActivity;
import org.greenrobot.eventbus.EventBus;
import push.HiPushManager;
import utils.AppManager;
import utils.FileCutCountUtil;
import utils.HiLogcatUtil;
import utils.HiTools;
import utils.SharePreUtils;
import utils.SystemUtils;
import zbar.QRZXBScanActivity;

public class MyApplication extends Application {
    private static MyApplication instance;
    public static boolean isADShow;
    public static boolean isClickAD;
    public static long mIsBackgroundTime;
    private int activityCount;
    public HiManageLib mHiManage;
    private Process mLogProcess;

    static int access$012(MyApplication myApplication, int i) {
        int i2 = myApplication.activityCount + i;
        myApplication.activityCount = i2;
        return i2;
    }

    static int access$020(MyApplication myApplication, int i) {
        int i2 = myApplication.activityCount - i;
        myApplication.activityCount = i2;
        return i2;
    }

    public static MyApplication getInstance() {
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        if (instance == null) {
            instance = this;
        }
        BackgroundTasks.initInstance();
        registerActivityLifecycleCallbacks(new LifeRecycle());
        if (SharePreUtils.getBoolean(HiDataValue.CACHE, this, "isAcceptAgreement", false) && shouldInit()) {
            this.mHiManage = new HiManageLib();
            new HiPushManager(instance).registPush();
            TTAdManagerHolder.init(this);
        }
    }

    public void Hi_doappinit() {
        if (shouldInit()) {
            if (instance == null) {
                instance = this;
            }
            this.mHiManage = new HiManageLib();
        }
    }

    public void openSDKLog() {
        HiSystemValue.DEBUG_MODE = true;
        HiSystemValue.LEVELFLAG = 1;
        HiManageLib hiManageLib = this.mHiManage;
        if (hiManageLib != null) {
            hiManageLib.SetDebugFlag(127, 1, 1, 1, 1, 1, 1, 1);
        }
    }

    public void openSDKLogAll() {
        HiSystemValue.DEBUG_MODE = true;
        HiSystemValue.LEVELFLAG = 0;
        HiManageLib hiManageLib = this.mHiManage;
        if (hiManageLib != null) {
            hiManageLib.SetDebugFlag(127, 1, 0, 0, 1, 0, 0, 0);
        }
    }

    public void shutdownSDKLog() {
        HiSystemValue.DEBUG_MODE = false;
        HiManageLib hiManageLib = this.mHiManage;
        if (hiManageLib != null) {
            hiManageLib.SetDebugFlag(0, 0, 0, 0, 0, 0, 0, 1);
        }
    }

    public void startFileCutCount() {
        FileCutCountUtil.getSingleton().startCount();
    }

    public void endFileCutCount() {
        FileCutCountUtil.getSingleton().endCount();
    }

    public void openWriteLog() {
        try {
            Log.d("MyApp", "PID is " + Process.myPid());
            Calendar calendar = Calendar.getInstance();
            File file = new File(HiDataValue.getRunLogPath(this));
            if (!file.exists()) {
                file.mkdirs();
            }
            Process exec = Runtime.getRuntime().exec(String.format("logcat -v time -f %s", String.format(HiDataValue.getRunLogPath(this) + "CamHipro-%04d.%02d.%02d-%02d.%02d.%02d.txt", Integer.valueOf(calendar.get(1)), Integer.valueOf(calendar.get(2) + 1), Integer.valueOf(calendar.get(5)), Integer.valueOf(calendar.get(11)), Integer.valueOf(calendar.get(12)), Integer.valueOf(calendar.get(13)))));
            this.mLogProcess = exec;
            exec.getOutputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void shutdownWriteLog() {
        Process process = this.mLogProcess;
        if (process != null) {
            process.destroy();
        }
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        shutdownWriteLog();
    }

    private boolean shouldInit() {
        if (SystemUtils.isHuaweiMobile(this)) {
            return true;
        }
        ActivityManager activityManager = (ActivityManager) getSystemService("activity");
        if (activityManager == null) {
            return false;
        }
        List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();
        String packageName = getPackageName();
        int myPid = Process.myPid();
        for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
            if (runningAppProcessInfo.pid == myPid && packageName.equals(runningAppProcessInfo.processName)) {
                return true;
            }
        }
        return false;
    }

    public void HI_doDisConnect(MyCamera myCamera) {
        HiLogcatUtil.e("onActivityCreated" + HiDataValue.quitAPP + "::" + HiDataValue.isNeedkillNoMain);
        if (HiDataValue.quitAPP || HiDataValue.isNeedkillNoMain) {
            return;
        }
        HiLogcatUtil.i("APP ");
        if (myCamera.getIsLiteOs() && myCamera.getConnectState() == 4) {
            EventBus.getDefault().post(new CameraBean(1, myCamera));
        }
        myCamera.isFloatingW = false;
    }

    class LifeRecycle implements Application.ActivityLifecycleCallbacks {
        @Override
        public void onActivityCreated(Activity activity2, Bundle bundle) {
        }

        @Override
        public void onActivityDestroyed(Activity activity2) {
        }

        @Override
        public void onActivityPaused(Activity activity2) {
        }

        @Override
        public void onActivityResumed(Activity activity2) {
        }

        @Override
        public void onActivitySaveInstanceState(Activity activity2, Bundle bundle) {
        }

        LifeRecycle() {
        }

        @Override
        public void onActivityStarted(Activity activity2) {
            MyApplication.access$012(MyApplication.this, 1);
        }

        @Override
        public void onActivityStopped(Activity activity2) {
            MyApplication.access$020(MyApplication.this, 1);
            HiLogcatUtil.e("onActivityCreated" + activity2.getLocalClassName() + "::" + MyApplication.this.activityCount + HiDataValue.CURRENT_CAMERA_UID + HiTools.isOtherLiteosDev(HiDataValue.CURRENT_CAMERA_UID) + HiTools.is4GLiteOSDev(HiDataValue.CURRENT_CAMERA_UID) + QRZXBScanActivity.CHOOSE_QRCODE + HiDataValue.quitAPP + HiDataValue.isAPChooseWifi + HiDataValue.isNeedkillNoMain);
            if (MyApplication.this.activityCount == 0) {
                if ((HiDataValue.CURRENT_CAMERA_UID.contains("LITE") || HiTools.isOtherLiteosDev(HiDataValue.CURRENT_CAMERA_UID) || HiTools.is4GLiteOSDev(HiDataValue.CURRENT_CAMERA_UID)) && !QRZXBScanActivity.CHOOSE_QRCODE && !HiDataValue.quitAPP && !HiDataValue.isAPChooseWifi && !HiDataValue.isNeedkillNoMain) {
                    HiLogcatUtil.e("onActivityCreated" + activity2.getLocalClassName() + "::" + MyApplication.this.activityCount);
                    AppManager.getInstance().killAllActivityNoMain(MainActivity.class);
                    HiDataValue.CURRENT_CAMERA_UID = "";
                }
                if (!HiTools.isOtherLiteosDev(HiDataValue.CURRENT_CAMERA_UID) && !HiTools.is4GLiteOSDev(HiDataValue.CURRENT_CAMERA_UID) && !HiDataValue.isNeedkillNoMain) {
                    HiLogcatUtil.e("onActivityCreated" + activity2.getLocalClassName() + "::" + MyApplication.this.activityCount);
                    AppManager.getInstance().killActivity(LiveViewActivity.class);
                    AppManager.getInstance().killActivity(LandLiveActivity.class);
                    AppManager.getInstance().killActivity(OSLandLiveActivity.class);
                    AppManager.getInstance().killActivity(LiveViewSingleNVRActivity.class);
                    AppManager.getInstance().killActivity(LiveViewNVRActivity.class);
                }
                HiLogcatUtil.e("onActivityCreated" + HiDataValue.quitAPP + "::" + HiDataValue.isNeedkillNoMain);
                if (HiDataValue.quitAPP) {
                    return;
                }
                HiLogcatUtil.i("APP 退到了后台或者黑屏");
                if (!MyApplication.isClickAD) {
                    if (!MyApplication.isADShow && AppManager.mActivityStack != null && AppManager.mActivityStack.size() == 1 && AppManager.mActivityStack.get(0).getClass() == MainActivity.class) {
                        MyApplication.mIsBackgroundTime = System.currentTimeMillis();
                    }
                } else {
                    MyApplication.isClickAD = false;
                }
                for (MyCamera myCamera : HiDataValue.CameraList) {
                    if (myCamera.getIsLiteOs() && myCamera.getConnectState() == 4 && !myCamera.isFloatingW) {
                        EventBus.getDefault().post(new CameraBean(1, myCamera));
                    }
                }
            }
        }
    }

    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
}