夏天YY v1.0版本的 MD5 值为:04df6daece98ad4aaa5f0e7a450865f8
以下内容为反编译后的 g.java 源代码,内容仅作参考
package c.t.m.g;
import android.location.Location;
import android.os.Build;
import android.os.Looper;
import android.os.Message;
import c.t.m.g.db;
import com.tencent.map.geolocation.util.DateUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicBoolean;
public class g extends bv {
private final File d;
private volatile long l;
private volatile int m;
private volatile int n;
private volatile int o;
private volatile float p;
private volatile float q;
private final StringBuilder f107c = new StringBuilder();
private volatile long e = 0;
private volatile long f = 0;
private final long[] g = new long[2];
private final int[] h = new int[2];
private ArrayList<Float> i = new ArrayList<>();
private ArrayList<Float> j = new ArrayList<>();
private HashSet<Integer> k = new HashSet<>();
private AtomicBoolean r = new AtomicBoolean(false);
public void a(long j, int i, double d, double d2, double d3) {
}
@Override
public String b() {
return "UserTrackPro";
}
public g(File file) {
this.d = file;
}
@Override
public void a(Message message) throws Exception {
switch (message.what) {
case 1001:
h();
this.e = System.currentTimeMillis() - 40000;
a(1004, 300000L);
return;
case 1002:
cu.b(e());
if (this.h[0] + this.h[1] >= 3) {
b(this.f107c.toString());
}
h();
j();
return;
case 1003:
a((String) message.obj);
return;
case 1004:
a(1004, 1800000L);
j();
return;
default:
return;
}
}
private void h() {
this.f = System.currentTimeMillis();
this.f107c.setLength(0);
Arrays.fill(this.h, 0);
Arrays.fill(this.g, 0L);
}
@Override
public int a(Looper looper) {
this.l = 0L;
this.o = -1;
this.n = -1;
a(1001, 0L);
return 0;
}
@Override
public void a() {
a(1002, 0L);
this.i.clear();
this.j.clear();
this.k.clear();
}
public void a(long j) {
if (j < 0) {
j = 0;
}
a(1004, j);
}
public void a(int i, Location location) {
String format;
synchronized (this.b) {
if (g()) {
long currentTimeMillis = System.currentTimeMillis();
if (currentTimeMillis - this.g[0] < 900) {
return;
}
this.g[0] = currentTimeMillis;
int[] iArr = this.h;
iArr[0] = iArr[0] + 1;
if (location != null && "gps".equals(location.getProvider())) {
if (j.h || Build.VERSION.SDK_INT < 18 || !location.isFromMockProvider()) {
if (currentTimeMillis - this.l > 2000) {
format = String.format(Locale.ENGLISH, "%d,G,%d,%d,%.6f,%.6f,%.1f,%.1f,%.1f,%.1f,-1,-1,0,-1,0", Long.valueOf(currentTimeMillis), Long.valueOf(location.getTime()), Integer.valueOf(i), Double.valueOf(location.getLatitude()), Double.valueOf(location.getLongitude()), Double.valueOf(location.getAltitude()), Float.valueOf(location.getAccuracy()), Float.valueOf(location.getSpeed()), Float.valueOf(location.getBearing()));
} else {
format = String.format(Locale.ENGLISH, "%d,G,%d,%d,%.6f,%.6f,%.1f,%.1f,%.1f,%.1f,%d,%d,%.2f,%d,%.2f", Long.valueOf(currentTimeMillis), Long.valueOf(location.getTime()), Integer.valueOf(i), Double.valueOf(location.getLatitude()), Double.valueOf(location.getLongitude()), Double.valueOf(location.getAltitude()), Float.valueOf(location.getAccuracy()), Float.valueOf(location.getSpeed()), Float.valueOf(location.getBearing()), Integer.valueOf(this.m), Integer.valueOf(this.n), Float.valueOf(this.p), Integer.valueOf(this.o), Float.valueOf(this.q));
}
cu.a(e(), 1003, 0, 0, format);
}
}
}
}
}
private void a(String str) {
long currentTimeMillis = System.currentTimeMillis();
if (this.f107c.length() == 0) {
this.f107c.append(i());
this.f = currentTimeMillis;
}
StringBuilder sb = this.f107c;
sb.append('$');
sb.append(str);
if (this.f107c.length() >= 15360 || (this.f != 0 && currentTimeMillis - this.f >= 600000)) {
if (this.h[0] + this.h[1] >= 3) {
b(this.f107c.toString());
}
this.f107c.setLength(0);
Arrays.fill(this.h, 0);
}
}
private void b(String str) {
if (de.a(str)) {
return;
}
try {
byte[] bytes = str.getBytes("UTF-8");
byte[] a = l.a(bytes, 3);
if (cy.a()) {
cy.a("UserTrackPro", "srcBytes.len=" + bytes.length + ",encBytes.len=" + a.length);
}
File file = new File(this.d, "utr_" + da.a(e.class.getName(), "SHA-256").substring(0, 8) + "_" + cl.b("yyyyMMdd"));
cr.a(file, a, true);
if (file.length() > 51200) {
String parent = file.getParent();
file.renameTo(new File(parent, file.getName() + "_" + cl.b("HHmmss")));
}
} catch (Throwable th) {
if (cy.a()) {
cy.a("UserTrackPro", "writeStrToFile error.", th);
}
}
}
private String i() {
String str = di.l().replaceAll("[| _,]", "") + "_" + di.j() + "_" + di.m();
String str2 = ((String) dd.a(Build.MANUFACTURER, "")).replaceAll("[| _,]", "") + "_" + ((String) dd.a(di.i(), "")).replaceAll("[| _,]", "");
String f = di.f();
if (de.a(f) || "0123456789ABCDEF".equals(f)) {
f = di.b();
}
StringBuilder sb = new StringBuilder();
sb.append("SYSTEM,");
sb.append(System.currentTimeMillis());
sb.append(',');
sb.append(f);
sb.append(',');
sb.append(j.i == null ? "" : j.i.d());
sb.append(',');
sb.append(str);
sb.append(',');
sb.append(str2);
sb.append(',');
sb.append(Build.VERSION.SDK_INT);
sb.append(',');
sb.append(m.a());
sb.append(',');
sb.append(m.c());
sb.append(',');
sb.append(m.d().replaceAll(":", "").toLowerCase());
sb.append(',');
sb.append(m.b());
return sb.toString();
}
private void j() {
long currentTimeMillis = System.currentTimeMillis();
if (currentTimeMillis - this.e < DateUtils.ONE_MINUTE) {
if (cy.a()) {
cy.a("UserTrackPro", "last upload time: < 1min");
return;
}
return;
}
this.e = currentTimeMillis;
db.a a = db.a();
boolean z = true;
if (a == db.a.NETWORK_NONE) {
z = false;
} else if (a == db.a.NETWORK_MOBILE) {
boolean z2 = j.f;
if (!j.f && j.g) {
long longValue = ((Long) dh.b("LocationSDK", "log_utr_up_in_m", Long.valueOf(currentTimeMillis))).longValue();
if (currentTimeMillis - longValue > 86400000) {
dh.a("LocationSDK", "log_utr_up_in_m", Long.valueOf(currentTimeMillis));
if (cy.a()) {
cy.a("UserTrackPro", "upload in mobile once today. lastUpT=" + longValue + ",curT=" + currentTimeMillis);
}
}
}
z = z2;
}
if (z) {
cs.a("th_loc_task_t_consume", new Runnable() {
@Override
public void run() {
if (g.this.r.get()) {
return;
}
g.this.r.set(true);
try {
g.this.k();
} finally {
try {
} finally {
}
}
}
});
}
}
public void k() {
File[] listFiles = (this.d == null || !this.d.exists()) ? null : this.d.listFiles();
if (de.c(listFiles)) {
return;
}
long currentTimeMillis = System.currentTimeMillis();
db.a a = db.a();
String b = cl.b("yyyyMMdd");
int i = 0;
for (final File file : listFiles) {
String name = file.getName();
if (file.exists() && file.isFile() && name.startsWith("utr_") && !name.contains(b)) {
if (currentTimeMillis - file.lastModified() > 1296000000) {
if (cy.a()) {
cy.a("UserTrackPro", "del file:" + file.getName());
}
file.delete();
} else {
byte[] b2 = cr.b(file);
i += b2.length;
if (cy.a()) {
cy.a("UserTrackPro", "upload file:" + file.getName() + ",len=" + b2.length + ",sum=" + i + ",netType=" + a);
}
if (b2.length == 0) {
file.delete();
} else {
j.k.a(l(), b2, new bn() {
@Override
public void a(String str) {
if (cy.a()) {
cy.a("UserTrackPro", "upload succeed:" + str);
}
file.delete();
}
@Override
public void b(String str) {
if (cy.a()) {
cy.b("UserTrackPro", "upload failed:" + str);
}
}
});
if (a == db.a.NETWORK_MOBILE || i >= 512000) {
return;
}
}
}
}
}
}
private String l() {
String str = j.h ? "https://testdatalbs.sparta.html5.qq.com/tr?utr" : "https://analytics.map.qq.com/tr?utr";
return !j.e ? str.replace("https:", "http:") : str;
}
}