QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685

以下内容为反编译后的 CompressUtil.java 源代码,内容仅作参考


package com.tencent.mtt.fileclean.appclean.compress;

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.media.MediaMetadataRetriever;
import android.text.TextUtils;
import android.view.View;
import com.tencent.common.data.FSFileInfo;
import com.tencent.common.fresco.pipeline.CImage;
import com.tencent.common.fresco.pipeline.ImageHub;
import com.tencent.common.fresco.request.ImageRequestCallBack;
import com.tencent.common.fresco.request.ImageRequester;
import com.tencent.common.utils.FileUtils;
import com.tencent.mtt.browser.file.FileManagerUtils;
import com.tencent.mtt.browser.file.filestore.FileDataMgr;
import com.tencent.mtt.browser.file.filestore.FileStoreDBHelper;
import com.tencent.mtt.browser.file.recyclerbin.RecyclerBinHolder;
import com.tencent.mtt.browser.file.utils.series.FileSeriesUtils;
import com.tencent.mtt.browser.utils.FileLog;
import com.tencent.mtt.browser.window.UrlParams;
import com.tencent.mtt.businesscenter.facade.IFrameworkDelegate;
import com.tencent.mtt.qbcontext.core.QBContext;
import com.tencent.mtt.tool.FilePreferenceManager;
import com.tencent.mtt.video.browser.export.wc.m3u8.PlayList;
import com.tencent.mtt.video.internal.facade.IVideoService;
import com.tencent.mtt.video.internal.utils.CommonUtils;
import com.tencent.mtt.view.dialog.newui.SimpleDialogBuilder;
import com.tencent.mtt.view.dialog.newui.builder.api.base.IDialogBuilderInterface;
import com.tencent.mtt.view.dialog.newui.dialog.DialogBase;
import com.tencent.mtt.view.dialog.newui.view.ViewOnClickListener;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class CompressUtil {

    public static final String f65180a = FileUtils.b().getAbsolutePath() + File.separator + "QQBrowser" + File.separator + "QQ浏览器压缩文件";

    public static final String f65181b = FileUtils.b().getAbsolutePath() + File.separator + "QQBrowser" + File.separator + "QQ浏览器压缩文件" + File.separator + ".cache";

    public static int a(int i, boolean z) {
        if (i >= 1920) {
            return z ? 1080 : 1280;
        }
        if (i >= 1680) {
            return z ? 720 : 1080;
        }
        if (i >= 1280) {
            return z ? 480 : 720;
        }
        if (i >= 720) {
            return z ? 360 : 480;
        }
        if (z) {
            return i / 2;
        }
        return 360;
    }

    public static long a(FSFileInfo fSFileInfo) {
        double d2;
        double d3;
        double d4 = (long) (fSFileInfo.f9375d / 1048576.0d);
        if (d4 >= 1.0d && d4 < 2.0d) {
            d2 = fSFileInfo.f9375d;
            d3 = 0.9d;
        } else if (d4 >= 2.0d && d4 < 3.0d) {
            d2 = fSFileInfo.f9375d;
            d3 = 0.85d;
        } else if (d4 < 3.0d || d4 >= 4.0d) {
            d2 = fSFileInfo.f9375d;
            d3 = 0.8d;
        } else {
            d2 = fSFileInfo.f9375d;
            d3 = 0.75d;
        }
        return (long) (d2 * d3);
    }

    public static long a(FSFileInfo fSFileInfo, boolean z) {
        FileInputStream fileInputStream;
        if (!new File(fSFileInfo.f9373b).exists()) {
            FileDataMgr.a().a(fSFileInfo.f9373b);
            return 0L;
        }
        FileLog.a("COMPRESSUTIL", fSFileInfo.f9373b);
        if (fSFileInfo == null || fSFileInfo.q != 3) {
            return 0L;
        }
        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        if (fSFileInfo.f9373b.toLowerCase().endsWith(".m3u8")) {
            FileInputStream fileInputStream2 = null;
            try {
                try {
                    fileInputStream = new FileInputStream(new File(fSFileInfo.f9373b));
                } catch (Exception unused) {
                }
            } catch (Throwable th) {
                th = th;
            }
            try {
                PlayList parse = PlayList.parse(new InputStreamReader(fileInputStream, "UTF-8"));
                if (parse == null || parse.getPlayList().size() <= 0) {
                    FileUtils.a((Closeable) fileInputStream);
                    return 0L;
                }
                Iterator<String> it = parse.getPlayList().iterator();
                while (true) {
                    if (!it.hasNext()) {
                        break;
                    }
                    String next = it.next();
                    if (next.startsWith("file:///")) {
                        break;
                    }
                }
                FileUtils.a((Closeable) fileInputStream);
            } catch (Exception unused2) {
                fileInputStream2 = fileInputStream;
                Bitmap frameAtTime = ((IVideoService) QBContext.getInstance().getService(IVideoService.class)).getFrameAtTime(fSFileInfo.f9373b, -1);
                if (frameAtTime == null) {
                    FileUtils.a((Closeable) fileInputStream2);
                    return 0L;
                }
                int max = Math.max(frameAtTime.getHeight(), frameAtTime.getWidth());
                int a2 = a(max, z);
                long j = fSFileInfo.f9375d;
                long j2 = fSFileInfo.f9375d;
                long j3 = a2;
                long j4 = j2 * j3 * j3;
                long j5 = max;
                long j6 = j - ((j4 / j5) / j5);
                FileUtils.a((Closeable) fileInputStream2);
                return j6;
            } catch (Throwable th2) {
                th = th2;
                fileInputStream2 = fileInputStream;
                FileUtils.a((Closeable) fileInputStream2);
                throw th;
            }
        } else {
            mediaMetadataRetriever.setDataSource(fSFileInfo.f9373b);
        }
        String extractMetadata = mediaMetadataRetriever.extractMetadata(18);
        String extractMetadata2 = mediaMetadataRetriever.extractMetadata(19);
        if (extractMetadata == null || extractMetadata2 == null) {
            return 0L;
        }
        int max2 = Math.max(Integer.valueOf(extractMetadata).intValue(), Integer.valueOf(extractMetadata2).intValue());
        int a3 = a(max2, z);
        long j7 = fSFileInfo.f9375d;
        long j8 = fSFileInfo.f9375d;
        long j9 = a3;
        long j10 = j8 * j9 * j9;
        long j11 = max2;
        return j7 - ((j10 / j11) / j11);
    }

    public static long a(ArrayList<FSFileInfo> arrayList) {
        long j = 0;
        if (arrayList != null && arrayList.size() != 0) {
            System.currentTimeMillis();
            Iterator<FSFileInfo> it = arrayList.iterator();
            while (it.hasNext()) {
                j += a(it.next());
            }
        }
        return j;
    }

    public static long a(ArrayList<FSFileInfo> arrayList, boolean z) {
        long j = 0;
        if (arrayList != null && arrayList.size() != 0) {
            System.currentTimeMillis();
            Iterator<FSFileInfo> it = arrayList.iterator();
            while (it.hasNext()) {
                j += a(it.next(), z);
            }
        }
        return j;
    }

    public static ArrayList<FSFileInfo> a(String str) {
        char c2;
        ArrayList<FSFileInfo> k = FileStoreDBHelper.a().k();
        ArrayList<FSFileInfo> arrayList = new ArrayList<>();
        ArrayList<FSFileInfo> arrayList2 = new ArrayList<>();
        ArrayList<FSFileInfo> arrayList3 = new ArrayList<>();
        ArrayList<FSFileInfo> arrayList4 = new ArrayList<>();
        ArrayList<FSFileInfo> arrayList5 = new ArrayList<>();
        ArrayList<FSFileInfo> arrayList6 = new ArrayList<>();
        ArrayList<FSFileInfo> arrayList7 = new ArrayList<>();
        for (FSFileInfo fSFileInfo : k) {
            if (fSFileInfo.I == 1) {
                arrayList2.add(fSFileInfo);
            } else if (fSFileInfo.I == 2) {
                arrayList3.add(fSFileInfo);
            } else if (fSFileInfo.I == 5) {
                arrayList6.add(fSFileInfo);
            } else {
                a(arrayList, arrayList4, arrayList5, arrayList7, fSFileInfo);
            }
        }
        switch (str.hashCode()) {
            case -1956389670:
                if (str.equals("QQ浏览器视频")) {
                    c2 = 4;
                    break;
                }
                c2 = 65535;
                break;
            case 3623339:
                if (str.equals("QQ视频")) {
                    c2 = 3;
                    break;
                }
                c2 = 65535;
                break;
            case 641788843:
                if (str.equals("其他视频")) {
                    c2 = 6;
                    break;
                }
                c2 = 65535;
                break;
            case 750484670:
                if (str.equals("微信视频")) {
                    c2 = 2;
                    break;
                }
                c2 = 65535;
                break;
            case 750891173:
                if (str.equals("录屏视频")) {
                    c2 = 5;
                    break;
                }
                c2 = 65535;
                break;
            case 933842509:
                if (str.equals("相机视频")) {
                    c2 = 0;
                    break;
                }
                c2 = 65535;
                break;
            case 1239488375:
                if (str.equals("企业微信视频")) {
                    c2 = 1;
                    break;
                }
                c2 = 65535;
                break;
            default:
                c2 = 65535;
                break;
        }
        return c2 != 0 ? c2 != 1 ? c2 != 2 ? c2 != 3 ? c2 != 4 ? c2 != 5 ? arrayList7 : arrayList4 : arrayList6 : arrayList3 : arrayList2 : arrayList5 : arrayList;
    }

    private static ArrayList<FSFileInfo> a(String str, ArrayList<FSFileInfo> arrayList, ArrayList<FSFileInfo> arrayList2, ArrayList<FSFileInfo> arrayList3, ArrayList<FSFileInfo> arrayList4, ArrayList<FSFileInfo> arrayList5, ArrayList<FSFileInfo> arrayList6, ArrayList<FSFileInfo> arrayList7) {
        char c2;
        switch (str.hashCode()) {
            case -1956802472:
                if (str.equals("QQ浏览器图片")) {
                    c2 = 4;
                    break;
                }
                c2 = 65535;
                break;
            case 3210537:
                if (str.equals("QQ图片")) {
                    c2 = 3;
                    break;
                }
                c2 = 65535;
                break;
            case 641376041:
                if (str.equals("其他图片")) {
                    c2 = 6;
                    break;
                }
                c2 = 65535;
                break;
            case 727999610:
                if (str.equals("屏幕截图")) {
                    c2 = 5;
                    break;
                }
                c2 = 65535;
                break;
            case 750071868:
                if (str.equals("微信图片")) {
                    c2 = 2;
                    break;
                }
                c2 = 65535;
                break;
            case 933429707:
                if (str.equals("相机图片")) {
                    c2 = 0;
                    break;
                }
                c2 = 65535;
                break;
            case 1239075573:
                if (str.equals("企业微信图片")) {
                    c2 = 1;
                    break;
                }
                c2 = 65535;
                break;
            default:
                c2 = 65535;
                break;
        }
        return c2 != 0 ? c2 != 1 ? c2 != 2 ? c2 != 3 ? c2 != 4 ? c2 != 5 ? arrayList7 : arrayList4 : arrayList6 : arrayList3 : arrayList2 : arrayList5 : arrayList;
    }

    private static ArrayList<FSFileInfo> a(ArrayList<FSFileInfo> arrayList, ArrayList<FSFileInfo> arrayList2, ArrayList<FSFileInfo> arrayList3, ArrayList<FSFileInfo> arrayList4, ArrayList<FSFileInfo> arrayList5, ArrayList<FSFileInfo> arrayList6, ArrayList<FSFileInfo> arrayList7, ArrayList<FSFileInfo> arrayList8) {
        int i = 0;
        if (!arrayList7.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("QQ浏览器图片", arrayList7, 0));
            i = 1;
        }
        if (!arrayList2.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("相机图片", arrayList2, i));
            i++;
        }
        if (!arrayList5.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("屏幕截图", arrayList5, i));
            i++;
        }
        if (!arrayList3.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("微信图片", arrayList3, i));
            i++;
        }
        if (!arrayList4.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("QQ图片", arrayList4, i));
            i++;
        }
        if (!arrayList6.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("企业微信图片", arrayList6, i));
            i++;
        }
        if (!arrayList8.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("其他图片", arrayList8, i));
        }
        FileManagerUtils.a(arrayList);
        return arrayList;
    }

    public static ArrayList<FSFileInfo> a(List<FSFileInfo> list) {
        ArrayList<FSFileInfo> arrayList = new ArrayList<>();
        ArrayList arrayList2 = new ArrayList();
        ArrayList arrayList3 = new ArrayList();
        ArrayList arrayList4 = new ArrayList();
        ArrayList arrayList5 = new ArrayList();
        ArrayList arrayList6 = new ArrayList();
        ArrayList arrayList7 = new ArrayList();
        ArrayList arrayList8 = new ArrayList();
        for (FSFileInfo fSFileInfo : list) {
            if (fSFileInfo.I == 1) {
                arrayList3.add(fSFileInfo);
            } else if (fSFileInfo.I == 2) {
                arrayList4.add(fSFileInfo);
            } else if (fSFileInfo.I == 5) {
                arrayList7.add(fSFileInfo);
            } else {
                a(arrayList2, arrayList5, arrayList6, arrayList8, fSFileInfo);
            }
        }
        int i = 0;
        if (!arrayList7.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("QQ浏览器视频", (ArrayList<FSFileInfo>) arrayList7, 0));
            i = 1;
        }
        if (!arrayList2.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("相机视频", (ArrayList<FSFileInfo>) arrayList2, i));
            i++;
        }
        if (!arrayList5.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("录屏视频", (ArrayList<FSFileInfo>) arrayList5, i));
            i++;
        }
        if (!arrayList3.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("微信视频", (ArrayList<FSFileInfo>) arrayList3, i));
            i++;
        }
        if (!arrayList4.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("QQ视频", (ArrayList<FSFileInfo>) arrayList4, i));
            i++;
        }
        if (!arrayList6.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("企业微信视频", (ArrayList<FSFileInfo>) arrayList6, i));
            i++;
        }
        if (!arrayList8.isEmpty()) {
            arrayList.add(FileSeriesUtils.a("其他视频", (ArrayList<FSFileInfo>) arrayList8, i));
        }
        FileManagerUtils.a(arrayList);
        return arrayList;
    }

    public static void a() {
        FilePreferenceManager.a().setBoolean("KET_HAS_RECYCLER_MEDIA", false);
    }

    private static void a(ArrayList<FSFileInfo> arrayList, ArrayList<FSFileInfo> arrayList2, ArrayList<FSFileInfo> arrayList3, ArrayList<FSFileInfo> arrayList4, FSFileInfo fSFileInfo) {
        String d2 = FileUtils.d(fSFileInfo.f9373b);
        if (d2 != null) {
            for (String str : FileSeriesUtils.f38778a) {
                if (d2.toLowerCase().endsWith(str.toLowerCase())) {
                    arrayList.add(fSFileInfo);
                    return;
                }
            }
            for (String str2 : FileSeriesUtils.f38780c) {
                if (d2.toLowerCase().endsWith(str2.toLowerCase())) {
                    arrayList2.add(fSFileInfo);
                    return;
                }
            }
            for (String str3 : FileSeriesUtils.f38781d) {
                if (d2.toLowerCase().contains(str3.toLowerCase())) {
                    arrayList3.add(fSFileInfo);
                    return;
                }
            }
            arrayList4.add(fSFileInfo);
        }
    }

    public static ArrayList<FSFileInfo> b(String str) {
        ArrayList<FSFileInfo> l = FileStoreDBHelper.a().l();
        ArrayList arrayList = new ArrayList();
        ArrayList arrayList2 = new ArrayList();
        ArrayList arrayList3 = new ArrayList();
        ArrayList arrayList4 = new ArrayList();
        ArrayList arrayList5 = new ArrayList();
        ArrayList arrayList6 = new ArrayList();
        ArrayList arrayList7 = new ArrayList();
        for (FSFileInfo fSFileInfo : l) {
            if (!fSFileInfo.f9373b.endsWith("gif")) {
                if (fSFileInfo.I == 1) {
                    arrayList2.add(fSFileInfo);
                } else if (fSFileInfo.I == 2) {
                    arrayList3.add(fSFileInfo);
                } else if (fSFileInfo.I != 5 || TextUtils.equals(FileUtils.d(fSFileInfo.f9373b), f65180a)) {
                    b(arrayList, arrayList4, arrayList5, arrayList7, fSFileInfo);
                } else {
                    arrayList6.add(fSFileInfo);
                }
            }
        }
        return a(str, (ArrayList<FSFileInfo>) arrayList, (ArrayList<FSFileInfo>) arrayList2, (ArrayList<FSFileInfo>) arrayList3, (ArrayList<FSFileInfo>) arrayList4, (ArrayList<FSFileInfo>) arrayList5, (ArrayList<FSFileInfo>) arrayList6, (ArrayList<FSFileInfo>) arrayList7);
    }

    public static ArrayList<FSFileInfo> b(List<FSFileInfo> list) {
        ArrayList arrayList = new ArrayList();
        ArrayList arrayList2 = new ArrayList();
        ArrayList arrayList3 = new ArrayList();
        ArrayList arrayList4 = new ArrayList();
        ArrayList arrayList5 = new ArrayList();
        ArrayList arrayList6 = new ArrayList();
        ArrayList arrayList7 = new ArrayList();
        ArrayList arrayList8 = new ArrayList();
        for (FSFileInfo fSFileInfo : list) {
            if (!fSFileInfo.f9373b.endsWith("gif")) {
                if (fSFileInfo.I == 1) {
                    arrayList3.add(fSFileInfo);
                } else if (fSFileInfo.I == 2) {
                    arrayList4.add(fSFileInfo);
                } else if (fSFileInfo.I != 5 || TextUtils.equals(FileUtils.d(fSFileInfo.f9373b), f65180a)) {
                    b(arrayList2, arrayList5, arrayList6, arrayList8, fSFileInfo);
                } else {
                    arrayList7.add(fSFileInfo);
                }
            }
        }
        return a((ArrayList<FSFileInfo>) arrayList, (ArrayList<FSFileInfo>) arrayList2, (ArrayList<FSFileInfo>) arrayList3, (ArrayList<FSFileInfo>) arrayList4, (ArrayList<FSFileInfo>) arrayList5, (ArrayList<FSFileInfo>) arrayList6, (ArrayList<FSFileInfo>) arrayList7, (ArrayList<FSFileInfo>) arrayList8);
    }

    private static void b(ArrayList<FSFileInfo> arrayList, ArrayList<FSFileInfo> arrayList2, ArrayList<FSFileInfo> arrayList3, ArrayList<FSFileInfo> arrayList4, FSFileInfo fSFileInfo) {
        String d2 = FileUtils.d(fSFileInfo.f9373b);
        if (d2 != null) {
            for (String str : FileSeriesUtils.f38779b) {
                if (d2.toLowerCase().endsWith(str.toLowerCase())) {
                    arrayList.add(fSFileInfo);
                    return;
                }
            }
            for (String str2 : FileSeriesUtils.f38780c) {
                if (d2.toLowerCase().endsWith(str2.toLowerCase())) {
                    arrayList2.add(fSFileInfo);
                    return;
                }
            }
            for (String str3 : FileSeriesUtils.f38781d) {
                if (d2.toLowerCase().contains(str3.toLowerCase())) {
                    arrayList3.add(fSFileInfo);
                    return;
                }
            }
            arrayList4.add(fSFileInfo);
        }
    }

    public static boolean b() {
        return FilePreferenceManager.a().getBoolean("KET_HAS_RECYCLER_MEDIA", false) && !FilePreferenceManager.a().getBoolean("KET_HAS_SHOW_RECYCLER_DIALOG", false);
    }

    public static long c(String str) {
        if (TextUtils.isEmpty(str)) {
            return 0L;
        }
        if (!new File(str).exists()) {
            FileDataMgr.a().a(str);
            return 0L;
        }
        FileLog.a("COMPRESSUTIL", str);
        if (str.toLowerCase().endsWith(".m3u8")) {
            return CommonUtils.g(str) * 1000;
        }
        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(str);
        String extractMetadata = mediaMetadataRetriever.extractMetadata(9);
        if (extractMetadata == null) {
            return 0L;
        }
        return Long.valueOf(extractMetadata).longValue();
    }

    public static void c() {
        if (b()) {
            ImageHub.a().a("https://static.res.qq.com/qbt/file/banner_recycler_bin_guid_11.0.0.png", new ImageRequestCallBack() {
                @Override
                public void onRequestFailure(ImageRequester imageRequester, Throwable th) {
                }

                @Override
                public void onRequestSuccess(ImageRequester imageRequester, CImage cImage) {
                    if (cImage != null) {
                        FilePreferenceManager.a().setBoolean("KET_HAS_SHOW_RECYCLER_DIALOG", true);
                        SimpleDialogBuilder.a().a(new BitmapDrawable(cImage.b())).a(IDialogBuilderInterface.ImageStyle.MATCH_MARGIN).b(true).d("文件已删除").e("可在“文件>右上角更多菜单>回收站”找到删除的文件。").a((CharSequence) "去看看").c("好的").a_(new ViewOnClickListener() {
                            @Override
                            public void onClick(View view, DialogBase dialogBase) {
                                ((IFrameworkDelegate) QBContext.getInstance().getService(IFrameworkDelegate.class)).doLoad(new UrlParams("qb://tab/file?showRecyclerBinGuide&entry=true"));
                                dialogBase.dismiss();
                            }
                        }).c(new ViewOnClickListener() {
                            @Override
                            public void onClick(View view, DialogBase dialogBase) {
                                dialogBase.dismiss();
                            }
                        }).e();
                    }
                }
            });
        }
    }

    public static void d(String str) {
        ArrayList arrayList = new ArrayList();
        arrayList.add(str);
        RecyclerBinHolder.a().a((List<String>) arrayList, false);
        if (FilePreferenceManager.a().getBoolean("KET_HAS_RECYCLER_MEDIA", false)) {
            return;
        }
        FilePreferenceManager.a().setBoolean("KET_HAS_RECYCLER_MEDIA", true);
    }
}