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