LiveTVGO v1.2.0版本的 MD5 值为:da2e0ec7ae0953637fc1e793d4a4faed
以下内容为反编译后的 NetworkTester.java 源代码,内容仅作参考
package com.startapp.networkTest.startapp;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Looper;
import com.startapp.common.b.b;
import com.startapp.common.jobrunner.RunnerRequest;
import com.startapp.common.jobrunner.interfaces.RunnerJob;
import com.startapp.networkTest.c;
import com.startapp.networkTest.d.a.e;
import com.startapp.networkTest.results.ConnectivityTestResult;
import com.startapp.networkTest.results.LatencyResult;
import com.startapp.networkTest.startapp.CoverageMapperManager;
public final class NetworkTester {
private static final String CTLT_CHECK_INTERVAL_KEY = "StartappCtLtCheckIntervalKey";
private static final String CTLT_GUARD_DIFF_KEY = "StartappGuardDiffKey";
private static final int CTLT_JOB_ID = 1156916329;
private static final String CTLT_PREV_TIME_CHECK_KEY = "StartappCtLtPrevTimeCheckKey";
private static final String P3WRAPPER_PREFS = "StartappP3WrapperPrefs";
static final String TAG = b.a(NetworkTester.class);
static NetworkTester sInstance;
Thread mActiveThread;
ConnectivityTestListener mConnectivityTestListener;
private Context mContext;
CoverageMapperManager mCoverageMapper;
public static final class Config {
public String PROJECT_ID = "20050";
public String CONNECTIVITY_TEST_HOSTNAME = "d2to8y50b3n6dq.cloudfront.net";
public String CONNECTIVITY_TEST_FILENAME = "/favicon.ico";
public boolean CONNECTIVITY_TEST_ENABLED = true;
public boolean NIR_COLLECT_CELLINFO = true;
public boolean CT_COLLECT_CELLINFO = true;
public int NIR_COLLECT_CELLINFO_THRESHOLD = 2;
public String CONNECTIVITY_TEST_CDNCONFIG_URL = "https://d2to8y50b3n6dq.cloudfront.net/truststores/[PROJECTID]/cdnconfig.zip";
public String GEOIP_URL = "https://geoip.api.c0nnectthed0ts.com/geoip/";
}
private NetworkTester() {
}
public static void init(Context context, Config config) {
if (context == null) {
throw new IllegalArgumentException("context is null");
}
if (config == null) {
throw new IllegalArgumentException("config is null");
}
String b = com.iab.omid.library.startapp.b.b(config);
if (b == null) {
throw new IllegalArgumentException("Wrong format of config");
}
if (sInstance != null) {
return;
}
com.startapp.common.jobrunner.a.a(context).a();
com.startapp.common.jobrunner.a.a(new a((byte) 0));
NetworkTester networkTester = new NetworkTester();
sInstance = networkTester;
networkTester.mContext = context;
c.a(context, b.getBytes());
sInstance.mCoverageMapper = new CoverageMapperManager(context);
}
public static void setOnConnectivityLatencyListener(ConnectivityTestListener connectivityTestListener) {
sInstance.mConnectivityTestListener = connectivityTestListener;
}
public static void setOnNetworkInfoListener(CoverageMapperManager.OnNetworkInfoResultListener onNetworkInfoResultListener) {
sInstance.mCoverageMapper.a(onNetworkInfoResultListener);
}
public static void startListening(long j, long j2) {
SharedPreferences sharedPreferences = sInstance.mContext.getSharedPreferences(P3WRAPPER_PREFS, 0);
sharedPreferences.edit().putLong(CTLT_CHECK_INTERVAL_KEY, j).commit();
sharedPreferences.edit().putLong(CTLT_GUARD_DIFF_KEY, j2).commit();
com.startapp.common.jobrunner.a.a(new RunnerRequest.a(CTLT_JOB_ID).a(j).a().a(true).b());
sInstance.mCoverageMapper.a();
}
public static void stopListening() {
CoverageMapperManager coverageMapperManager;
com.startapp.common.jobrunner.a.a((int) CTLT_JOB_ID, true);
NetworkTester networkTester = sInstance;
if (networkTester == null || (coverageMapperManager = networkTester.mCoverageMapper) == null) {
return;
}
coverageMapperManager.b();
}
static final class a implements com.startapp.common.jobrunner.interfaces.a {
private a() {
}
a(byte b) {
this();
}
@Override
public final RunnerJob a(int i) {
if (i != NetworkTester.CTLT_JOB_ID) {
return null;
}
return new RunnerJob() {
@Override
public final void a(Context context, RunnerJob.a aVar) {
if (NetworkTester.sInstance == null) {
aVar.a(RunnerJob.Result.SUCCESS);
} else if (!b.a(context, "android.permission.ACCESS_FINE_LOCATION") && !b.a(context, "android.permission.ACCESS_COARSE_LOCATION")) {
NetworkTester.sInstance.mCoverageMapper.b();
aVar.a(RunnerJob.Result.SUCCESS);
} else {
SharedPreferences sharedPreferences = context.getSharedPreferences(NetworkTester.P3WRAPPER_PREFS, 0);
long j = sharedPreferences.getLong(NetworkTester.CTLT_GUARD_DIFF_KEY, 120000L);
if (System.currentTimeMillis() - sharedPreferences.getLong(NetworkTester.CTLT_PREV_TIME_CHECK_KEY, 0L) < sharedPreferences.getLong(NetworkTester.CTLT_CHECK_INTERVAL_KEY, j) - j) {
aVar.a(RunnerJob.Result.SUCCESS);
} else if (!c.a()) {
aVar.a(RunnerJob.Result.FAILED);
} else if (NetworkTester.sInstance.mActiveThread != null) {
aVar.a(RunnerJob.Result.FAILED);
} else {
sharedPreferences.edit().putLong(NetworkTester.CTLT_PREV_TIME_CHECK_KEY, System.currentTimeMillis()).commit();
NetworkTester.sInstance.mCoverageMapper.a();
NetworkTester.sInstance.mActiveThread = new Thread(new RunnableC00821(context, aVar));
NetworkTester.sInstance.mActiveThread.start();
}
}
}
final class RunnableC00821 implements Runnable {
final RunnerJob.a a;
private Context b;
RunnableC00821(Context context, RunnerJob.a aVar) {
this.b = context;
this.a = aVar;
}
@Override
public final void run() {
final boolean[] zArr = new boolean[2];
Looper.prepare();
final Looper myLooper = Looper.myLooper();
final com.startapp.networkTest.d.a.b bVar = new com.startapp.networkTest.d.a.b(this.b.getApplicationContext());
bVar.a();
bVar.a(new e() {
@Override
public final void a(ConnectivityTestResult connectivityTestResult) {
boolean[] zArr2 = zArr;
if (zArr2[0]) {
if (myLooper != null) {
NetworkTester.sInstance.mActiveThread = null;
myLooper.quit();
RunnableC00821.this.a.a(RunnerJob.Result.SUCCESS);
return;
}
return;
}
zArr2[0] = true;
if (NetworkTester.sInstance.mConnectivityTestListener != null) {
NetworkTester.sInstance.mConnectivityTestListener.onConnectivityTestResult(connectivityTestResult);
}
}
@Override
public final void a(LatencyResult latencyResult) {
boolean[] zArr2 = zArr;
if (zArr2[1]) {
if (myLooper != null) {
NetworkTester.sInstance.mActiveThread = null;
myLooper.quit();
RunnableC00821.this.a.a(RunnerJob.Result.SUCCESS);
return;
}
return;
}
zArr2[1] = true;
if (NetworkTester.sInstance.mConnectivityTestListener != null) {
NetworkTester.sInstance.mConnectivityTestListener.onLatencyTestResult(latencyResult);
}
}
@Override
public final void a() {
bVar.b();
if (myLooper != null) {
NetworkTester.sInstance.mActiveThread = null;
myLooper.quit();
}
if (NetworkTester.sInstance.mConnectivityTestListener != null) {
NetworkTester.sInstance.mConnectivityTestListener.onConnectivityTestFinished(new Runnable() {
@Override
public final void run() {
RunnableC00821.this.a.a(RunnerJob.Result.SUCCESS);
}
});
} else {
RunnableC00821.this.a.a(RunnerJob.Result.SUCCESS);
}
}
});
Looper.loop();
}
}
};
}
}
}