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