CommonUtility.smali

.class public Lio/agora/rtc2/internal/CommonUtility;
.super Ljava/lang/Object;


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lio/agora/rtc2/internal/CommonUtility$Listener;,
        Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;,
        Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;,
        Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;
    }
.end annotation


# static fields
.field private static final INTERNAL_UPDATE_ROTATION:I = 0xc8

.field private static final LENGTH_SEPARATOR_CHARACTER:Ljava/lang/String; = "agora_length_&&_"

.field private static final OFFSET_SEPARATOR_CHARACTER:Ljava/lang/String; = "agora_offset_&&_"

.field public static final PREFIX_ASSETS:Ljava/lang/String; = "/assets/"

.field public static final PREFIX_URI:Ljava/lang/String; = "content://"

.field private static final TAG:Ljava/lang/String; = "CommonUtility"

.field static final UNKNOWN_BATTERY_PERCENTAGE:I = 0xff

.field private static final URI_PROTOCOL_HEAD:Ljava/lang/String; = "/proc/"

.field private static failedToGetRunningTasks:Z

.field private static ignoreMonitor:Z


# instance fields
.field private volatile lastOrientation:I

.field private volatile mBatteryPercentage:I

.field private mConnectionBroadcastReceiver:Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;

.field private final mContext:Ljava/lang/ref/WeakReference;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/lang/ref/WeakReference<",
            "Landroid/content/Context;",
            ">;"
        }
    .end annotation
.end field

.field private mDisplayListener:Landroid/hardware/display/DisplayManager$DisplayListener;

.field private mDisposed:Z

.field private mExtraConnectivityFilterActionForTesting:Ljava/lang/String;

.field private final mHandler:Landroid/os/Handler;

.field private mLastOrientation:I

.field private mListener:Lio/agora/rtc2/internal/CommonUtility$Listener;

.field private mNativeHandle:J

.field private mOrientationListener:Landroid/view/OrientationEventListener;

.field private mOrientationObserver:Landroid/content/BroadcastReceiver;

.field private mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

.field private mPowerChangeReceiver:Lio/agora/rtc2/internal/PowerChangeReceiver;

.field private mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;

.field private final mThreadChecker:Lio/agora/base/internal/ThreadUtils$ThreadChecker;

.field private volatile mUpdateRotationTrigger:Z

.field private mobileNetworkCallback:Landroid/net/ConnectivityManager$NetworkCallback;

.field private final rotationRunnable:Ljava/lang/Runnable;


# direct methods
.method static constructor <clinit>()V
    .registers 0

    return-void
.end method

.method public constructor <init>(Landroid/content/Context;J)V
    .registers 6
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "handle"
        }
    .end annotation

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    const/4 v0, 0x0

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mobileNetworkCallback:Landroid/net/ConnectivityManager$NetworkCallback;

    const/16 v1, 0xff

    iput v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mBatteryPercentage:I

    const/4 v1, 0x0

    iput-boolean v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisposed:Z

    iput-boolean v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mUpdateRotationTrigger:Z

    const/4 v1, -0x1

    iput v1, p0, Lio/agora/rtc2/internal/CommonUtility;->lastOrientation:I

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mConnectionBroadcastReceiver:Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mPowerChangeReceiver:Lio/agora/rtc2/internal/PowerChangeReceiver;

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationListener:Landroid/view/OrientationEventListener;

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisplayListener:Landroid/hardware/display/DisplayManager$DisplayListener;

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationObserver:Landroid/content/BroadcastReceiver;

    iput v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    new-instance v0, Lio/agora/rtc2/internal/CommonUtility$8;

    invoke-direct {v0, p0}, Lio/agora/rtc2/internal/CommonUtility$8;-><init>(Lio/agora/rtc2/internal/CommonUtility;)V

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->rotationRunnable:Ljava/lang/Runnable;

    const-string v0, "CommonUtility"

    const-string v1, "constructor()"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    new-instance v0, Ljava/lang/ref/WeakReference;

    invoke-direct {v0, p1}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    iput-wide p2, p0, Lio/agora/rtc2/internal/CommonUtility;->mNativeHandle:J

    new-instance p1, Lio/agora/base/internal/ThreadUtils$ThreadChecker;

    invoke-direct {p1}, Lio/agora/base/internal/ThreadUtils$ThreadChecker;-><init>()V

    iput-object p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mThreadChecker:Lio/agora/base/internal/ThreadUtils$ThreadChecker;

    new-instance p1, Landroid/os/HandlerThread;

    const-string p2, "UtilityThread"

    invoke-direct {p1, p2}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;)V

    invoke-virtual {p1}, Landroid/os/HandlerThread;->start()V

    new-instance p2, Landroid/os/Handler;

    invoke-virtual {p1}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;

    move-result-object p1

    invoke-direct {p2, p1}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V

    iput-object p2, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    new-instance p1, Lio/agora/rtc2/internal/CommonUtility$1;

    invoke-direct {p1, p0}, Lio/agora/rtc2/internal/CommonUtility$1;-><init>(Lio/agora/rtc2/internal/CommonUtility;)V

    invoke-virtual {p2, p1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

    return-void
.end method

.method static synthetic access$000(Lio/agora/rtc2/internal/CommonUtility;)V
    .registers 1

    invoke-direct {p0}, Lio/agora/rtc2/internal/CommonUtility;->stopMonitor()V

    return-void
.end method

.method static synthetic access$100(Lio/agora/rtc2/internal/CommonUtility;)Landroid/os/Handler;
    .registers 1

    iget-object p0, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    return-object p0
.end method

.method static synthetic access$200(Ljava/net/InetAddress;)Ljava/lang/String;
    .registers 1

    invoke-static {p0}, Lio/agora/rtc2/internal/CommonUtility;->inetAddressToIpAddress(Ljava/net/InetAddress;)Ljava/lang/String;

    move-result-object p0

    return-object p0
.end method

.method static synthetic access$300(Lio/agora/rtc2/internal/CommonUtility;)Ljava/lang/ref/WeakReference;
    .registers 1

    iget-object p0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    return-object p0
.end method

.method static synthetic access$402(Lio/agora/rtc2/internal/CommonUtility;Z)Z
    .registers 2

    iput-boolean p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mUpdateRotationTrigger:Z

    return p1
.end method

.method static checkAccessNetworkState(Landroid/content/Context;)Z
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    const/4 v0, 0x0

    if-nez p0, :cond_4

    return v0

    :cond_4
    const-string v1, "android.permission.ACCESS_NETWORK_STATE"

    invoke-virtual {p0, v1}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I

    move-result p0

    if-nez p0, :cond_d

    const/4 v0, 0x1

    :cond_d
    return v0
.end method

.method static checkAccessWifiState(Landroid/content/Context;)Z
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    const/4 v0, 0x0

    if-nez p0, :cond_4

    return v0

    :cond_4
    const-string v1, "android.permission.ACCESS_WIFI_STATE"

    invoke-virtual {p0, v1}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I

    move-result p0

    if-nez p0, :cond_d

    const/4 v0, 0x1

    :cond_d
    return v0
.end method

.method private disableDisplayListener()V
    .registers 3

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    if-nez v0, :cond_b

    return-void

    :cond_b
    const-string v1, "display"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/display/DisplayManager;

    if-eqz v0, :cond_1d

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisplayListener:Landroid/hardware/display/DisplayManager$DisplayListener;

    invoke-virtual {v0, v1}, Landroid/hardware/display/DisplayManager;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V

    const/4 v0, 0x0

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisplayListener:Landroid/hardware/display/DisplayManager$DisplayListener;

    :cond_1d
    const-string v0, "CommonUtility"

    const-string v1, "[disableDisplayListener] done!"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method

.method private enableDisplayListener(Landroid/content/Context;)V
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    if-eqz p1, :cond_25

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisplayListener:Landroid/hardware/display/DisplayManager$DisplayListener;

    if-eqz v0, :cond_7

    goto :goto_25

    :cond_7
    const-string v0, "display"

    invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object p1

    check-cast p1, Landroid/hardware/display/DisplayManager;

    if-nez p1, :cond_12

    return-void

    :cond_12
    new-instance v0, Lio/agora/rtc2/internal/CommonUtility$7;

    invoke-direct {v0, p0}, Lio/agora/rtc2/internal/CommonUtility$7;-><init>(Lio/agora/rtc2/internal/CommonUtility;)V

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisplayListener:Landroid/hardware/display/DisplayManager$DisplayListener;

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    invoke-virtual {p1, v0, v1}, Landroid/hardware/display/DisplayManager;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V

    const-string p1, "CommonUtility"

    const-string v0, "[enableDisplayListener] done!"

    invoke-static {p1, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    :cond_25
    :goto_25
    return-void
.end method

.method private static fillWifiInfoIfPossible(Landroid/content/Context;Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;)V
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "ni"
        }
    .end annotation

    invoke-static {p0}, Lio/agora/rtc2/internal/CommonUtility;->checkAccessWifiState(Landroid/content/Context;)Z

    move-result v0

    const-string v1, "CommonUtility"

    if-nez v0, :cond_e

    const-string p0, "fail to fillWifiInfo, permission ACCESS_WIFI_STATE not granted"

    invoke-static {v1, p0}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return-void

    :cond_e
    const-string/jumbo v0, "wifi"

    invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object p0

    check-cast p0, Landroid/net/wifi/WifiManager;

    invoke-virtual {p0}, Landroid/net/wifi/WifiManager;->getDhcpInfo()Landroid/net/DhcpInfo;

    move-result-object v0

    if-eqz v0, :cond_2b

    iget v0, v0, Landroid/net/DhcpInfo;->gateway:I

    invoke-static {v0}, Lio/agora/rtc2/internal/CommonUtility;->intToInetAddress(I)Ljava/net/InetAddress;

    move-result-object v0

    if-eqz v0, :cond_2b

    invoke-virtual {v0}, Ljava/net/InetAddress;->getHostAddress()Ljava/lang/String;

    move-result-object v0

    iput-object v0, p1, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->gatewayIp4:Ljava/lang/String;

    :cond_2b
    invoke-virtual {p0}, Landroid/net/wifi/WifiManager;->getConnectionInfo()Landroid/net/wifi/WifiInfo;

    move-result-object p0

    if-eqz p0, :cond_62

    invoke-virtual {p0}, Landroid/net/wifi/WifiInfo;->getRssi()I

    move-result v0

    iput v0, p1, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->rssi:I

    iget v0, p1, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->rssi:I

    const/4 v1, 0x5

    invoke-static {v0, v1}, Landroid/net/wifi/WifiManager;->calculateSignalLevel(II)I

    move-result v0

    iput v0, p1, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->signalLevel:I

    invoke-virtual {p0}, Landroid/net/wifi/WifiInfo;->getLinkSpeed()I

    move-result v0

    iput v0, p1, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->linkspeed:I

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x15

    if-lt v0, v1, :cond_67

    invoke-virtual {p0}, Landroid/net/wifi/WifiInfo;->getFrequency()I

    move-result p0

    iput p0, p1, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->frequency:I

    const/16 v0, 0x1388

    if-lt p0, v0, :cond_5b

    const/16 p0, 0x65

    :goto_58
    iput p0, p1, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->networkSubtype:I

    goto :goto_67

    :cond_5b
    const/16 v0, 0x960

    if-lt p0, v0, :cond_67

    const/16 p0, 0x64

    goto :goto_58

    :cond_62
    const-string p0, "fail to fillWifiInfo, wifiInfo null"

    invoke-static {v1, p0}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    :cond_67
    :goto_67
    return-void
.end method

.method public static getAndroidVersion()I
    .registers 1

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    return v0
.end method

.method private static getAppPrivateStorageDir(Landroid/content/Context;)Ljava/lang/String;
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    invoke-static {}, Landroid/os/Environment;->getExternalStorageState()Ljava/lang/String;

    move-result-object v0

    const-string v1, "mounted"

    invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_18

    const/4 v0, 0x0

    invoke-virtual {p0, v0}, Landroid/content/Context;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;

    move-result-object v0

    if-eqz v0, :cond_18

    invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;

    move-result-object p0

    return-object p0

    :cond_18
    invoke-virtual {p0}, Landroid/content/Context;->getFilesDir()Ljava/io/File;

    move-result-object p0

    invoke-virtual {p0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;

    move-result-object p0

    return-object p0
.end method

.method public static getAssetsFilePath(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
    .registers 8
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "url"
        }
    .end annotation

    const/4 v0, 0x0

    if-eqz p0, :cond_c8

    invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v1

    if-eqz v1, :cond_b

    goto/16 :goto_c8

    :cond_b
    invoke-virtual {p0}, Landroid/content/Context;->getAssets()Landroid/content/res/AssetManager;

    move-result-object p0

    const-string v1, "/assets/"

    invoke-virtual {p1, v1}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

    move-result v2

    add-int/lit8 v2, v2, 0x8

    invoke-virtual {p1, v2}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object p1

    :try_start_1b
    invoke-virtual {p0, p1}, Landroid/content/res/AssetManager;->openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;

    move-result-object p0
    :try_end_1f
    .catch Ljava/lang/Exception; {:try_start_1b .. :try_end_1f} :catch_98
    .catchall {:try_start_1b .. :try_end_1f} :catchall_96

    :try_start_1f
    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;

    move-result-object p1

    invoke-static {p1}, Landroid/os/ParcelFileDescriptor;->dup(Ljava/io/FileDescriptor;)Landroid/os/ParcelFileDescriptor;

    move-result-object p1

    invoke-virtual {p1}, Landroid/os/ParcelFileDescriptor;->getFd()I

    move-result p1
    :try_end_2b
    .catch Ljava/lang/Exception; {:try_start_1f .. :try_end_2b} :catch_91
    .catchall {:try_start_1f .. :try_end_2b} :catchall_8e

    if-gez p1, :cond_38

    if-eqz p0, :cond_37

    :try_start_2f
    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->close()V
    :try_end_32
    .catch Ljava/io/IOException; {:try_start_2f .. :try_end_32} :catch_33

    goto :goto_37

    :catch_33
    move-exception p0

    invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V

    :cond_37
    :goto_37
    return-object v0

    :cond_38
    :try_start_38
    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p1, "agora_offset_&&_"

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->getStartOffset()J

    move-result-wide v3

    invoke-virtual {v2, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    const-string p1, "agora_length_&&_"

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->getDeclaredLength()J

    move-result-wide v3

    invoke-virtual {v2, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    new-instance p1, Ljava/lang/StringBuilder;

    invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "getAssetsFilePath for init offset:"

    invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->getStartOffset()J

    move-result-wide v1

    invoke-virtual {p1, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    const-string v1, ","

    invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->getDeclaredLength()J

    move-result-wide v1

    invoke-virtual {p1, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {p1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;)V
    :try_end_83
    .catch Ljava/lang/Exception; {:try_start_38 .. :try_end_83} :catch_91
    .catchall {:try_start_38 .. :try_end_83} :catchall_8e

    if-eqz p0, :cond_a8

    :try_start_85
    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->close()V
    :try_end_88
    .catch Ljava/io/IOException; {:try_start_85 .. :try_end_88} :catch_89

    goto :goto_a8

    :catch_89
    move-exception p0

    invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V

    goto :goto_a8

    :catchall_8e
    move-exception p1

    move-object v0, p0

    goto :goto_bd

    :catch_91
    move-exception p1

    move-object v5, v0

    move-object v0, p0

    move-object p0, v5

    goto :goto_9a

    :catchall_96
    move-exception p1

    goto :goto_bd

    :catch_98
    move-exception p1

    move-object p0, v0

    :goto_9a
    :try_start_9a
    invoke-virtual {p1}, Ljava/lang/Exception;->printStackTrace()V
    :try_end_9d
    .catchall {:try_start_9a .. :try_end_9d} :catchall_96

    if-eqz v0, :cond_a7

    :try_start_9f
    invoke-virtual {v0}, Landroid/content/res/AssetFileDescriptor;->close()V
    :try_end_a2
    .catch Ljava/io/IOException; {:try_start_9f .. :try_end_a2} :catch_a3

    goto :goto_a7

    :catch_a3
    move-exception p1

    invoke-virtual {p1}, Ljava/io/IOException;->printStackTrace()V

    :cond_a7
    :goto_a7
    move-object v0, p0

    :cond_a8
    :goto_a8
    new-instance p0, Ljava/lang/StringBuilder;

    invoke-direct {p0}, Ljava/lang/StringBuilder;-><init>()V

    const-string p1, "getAssetsFilePath is: "

    invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    invoke-static {p0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;)V

    return-object v0

    :goto_bd
    if-eqz v0, :cond_c7

    :try_start_bf
    invoke-virtual {v0}, Landroid/content/res/AssetFileDescriptor;->close()V
    :try_end_c2
    .catch Ljava/io/IOException; {:try_start_bf .. :try_end_c2} :catch_c3

    goto :goto_c7

    :catch_c3
    move-exception p0

    invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V

    :cond_c7
    :goto_c7
    throw p1

    :cond_c8
    :goto_c8
    const-string p0, "getAssetsFilePath failed for init error"

    invoke-static {p0}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;)V

    return-object v0
.end method

.method public static getContentFilePath(Landroid/content/Context;Landroid/net/Uri;)Ljava/lang/String;
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "uri"
        }
    .end annotation

    const/4 v0, 0x0

    if-eqz p0, :cond_79

    if-nez p1, :cond_7

    goto/16 :goto_79

    :cond_7
    invoke-virtual {p0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object p0

    const/4 v1, -0x1

    :try_start_c
    const-string v2, "r"

    invoke-virtual {p0, p1, v2}, Landroid/content/ContentResolver;->openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;

    move-result-object p0
    :try_end_12
    .catch Ljava/lang/Exception; {:try_start_c .. :try_end_12} :catch_2d
    .catchall {:try_start_c .. :try_end_12} :catchall_2b

    :try_start_12
    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;

    move-result-object p1

    invoke-static {p1}, Landroid/os/ParcelFileDescriptor;->dup(Ljava/io/FileDescriptor;)Landroid/os/ParcelFileDescriptor;

    move-result-object p1

    invoke-virtual {p1}, Landroid/os/ParcelFileDescriptor;->getFd()I

    move-result v1
    :try_end_1e
    .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_1e} :catch_29
    .catchall {:try_start_12 .. :try_end_1e} :catchall_6c

    if-eqz p0, :cond_37

    :try_start_20
    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->close()V
    :try_end_23
    .catch Ljava/io/IOException; {:try_start_20 .. :try_end_23} :catch_24

    goto :goto_37

    :catch_24
    move-exception p0

    invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V

    goto :goto_37

    :catch_29
    move-exception p1

    goto :goto_2f

    :catchall_2b
    move-exception p1

    goto :goto_6e

    :catch_2d
    move-exception p1

    move-object p0, v0

    :goto_2f
    :try_start_2f
    invoke-virtual {p1}, Ljava/lang/Exception;->printStackTrace()V
    :try_end_32
    .catchall {:try_start_2f .. :try_end_32} :catchall_6c

    if-eqz p0, :cond_37

    :try_start_34
    invoke-virtual {p0}, Landroid/content/res/AssetFileDescriptor;->close()V
    :try_end_37
    .catch Ljava/io/IOException; {:try_start_34 .. :try_end_37} :catch_24

    :cond_37
    :goto_37
    if-gez v1, :cond_3a

    return-object v0

    :cond_3a
    new-instance p0, Ljava/lang/StringBuilder;

    invoke-direct {p0}, Ljava/lang/StringBuilder;-><init>()V

    const-string p1, "/proc/"

    invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-static {}, Landroid/os/Process;->myPid()I

    move-result p1

    invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string p1, "/fd/"

    invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    new-instance p1, Ljava/lang/StringBuilder;

    invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v0, "getContentFilePath is: "

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {p1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;)V

    return-object p0

    :catchall_6c
    move-exception p1

    move-object v0, p0

    :goto_6e
    if-eqz v0, :cond_78

    :try_start_70
    invoke-virtual {v0}, Landroid/content/res/AssetFileDescriptor;->close()V
    :try_end_73
    .catch Ljava/io/IOException; {:try_start_70 .. :try_end_73} :catch_74

    goto :goto_78

    :catch_74
    move-exception p0

    invoke-virtual {p0}, Ljava/io/IOException;->printStackTrace()V

    :cond_78
    :goto_78
    throw p1

    :cond_79
    :goto_79
    const-string p0, "getContentFilePath failed for init error"

    invoke-static {p0}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;)V

    return-object v0
.end method

.method public static getContextInfo(Landroid/content/Context;)Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    if-nez p0, :cond_b

    const-string p0, "CommonUtility"

    const-string v0, "fail to getContextInfo, context null"

    invoke-static {p0, v0}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    const/4 p0, 0x0

    return-object p0

    :cond_b
    new-instance v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;

    invoke-direct {v0}, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;-><init>()V

    invoke-static {}, Lio/agora/rtc2/internal/DeviceUtils;->getDeviceId()Ljava/lang/String;

    move-result-object v1

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->device:Ljava/lang/String;

    invoke-static {p0}, Lio/agora/rtc2/internal/CommonUtility;->getAppPrivateStorageDir(Landroid/content/Context;)Ljava/lang/String;

    move-result-object v1

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->configDir:Ljava/lang/String;

    invoke-virtual {p0}, Landroid/content/Context;->getCacheDir()Ljava/io/File;

    move-result-object v1

    invoke-virtual {v1}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;

    move-result-object v1

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->dataDir:Ljava/lang/String;

    invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;

    move-result-object v1

    iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->nativeLibraryDir:Ljava/lang/String;

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->pluginDir:Ljava/lang/String;

    invoke-static {}, Lio/agora/rtc2/internal/DeviceUtils;->getDeviceInfo()Ljava/lang/String;

    move-result-object v1

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->deviceInfo:Ljava/lang/String;

    invoke-static {}, Lio/agora/rtc2/internal/DeviceUtils;->getSystemInfo()Ljava/lang/String;

    move-result-object v1

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->systemInfo:Ljava/lang/String;

    invoke-static {}, Lio/agora/rtc2/internal/DeviceUtils;->getManufacturer()Ljava/lang/String;

    move-result-object v1

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->manufacturer:Ljava/lang/String;

    invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

    move-result-object p0

    iput-object p0, v0, Lio/agora/rtc2/internal/CommonUtility$AndroidContextInfo;->pkgName:Ljava/lang/String;

    return-object v0
.end method

.method public static getCpuTemperature()I
    .registers 1

    invoke-static {}, Lio/agora/rtc2/internal/DeviceUtils;->getCpuTemperature()I

    move-result v0

    return v0
.end method

.method public static getDisplayMetrics()[I
    .registers 5

    invoke-static {}, Lio/agora/base/internal/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const/4 v1, 0x2

    if-nez v0, :cond_d

    new-array v0, v1, [I

    fill-array-data v0, :array_68

    return-object v0

    :cond_d
    const-string/jumbo v2, "window"

    invoke-virtual {v0, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/view/WindowManager;

    new-instance v2, Landroid/util/DisplayMetrics;

    invoke-direct {v2}, Landroid/util/DisplayMetrics;-><init>()V

    if-nez v0, :cond_23

    new-array v0, v1, [I

    fill-array-data v0, :array_70

    return-object v0

    :cond_23
    invoke-interface {v0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;

    move-result-object v0

    if-nez v0, :cond_2f

    new-array v0, v1, [I

    fill-array-data v0, :array_78

    return-object v0

    :cond_2f
    sget v3, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v4, 0x11

    if-lt v3, v4, :cond_38

    invoke-virtual {v0, v2}, Landroid/view/Display;->getRealMetrics(Landroid/util/DisplayMetrics;)V

    :cond_38
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "getDisplayMetrics widthPixel: "

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v3, v2, Landroid/util/DisplayMetrics;->heightPixels:I

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v3, " , heightPixel: "

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v3, v2, Landroid/util/DisplayMetrics;->widthPixels:I

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    const-string v3, "CommonUtility"

    invoke-static {v3, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V

    new-array v0, v1, [I

    const/4 v1, 0x0

    iget v3, v2, Landroid/util/DisplayMetrics;->widthPixels:I

    aput v3, v0, v1

    const/4 v1, 0x1

    iget v2, v2, Landroid/util/DisplayMetrics;->heightPixels:I

    aput v2, v0, v1

    return-object v0

    nop

    :array_68
    .array-data 4
        0x0
        0x0
    .end array-data

    :array_70
    .array-data 4
        0x0
        0x0
    .end array-data

    :array_78
    .array-data 4
        0x0
        0x0
    .end array-data
.end method

.method private static getIpAddressByType(Ljava/net/InetAddress;ZLjava/lang/StringBuilder;)Ljava/lang/String;
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0,
            0x0
        }
        names = {
            "addr",
            "is_ipv4",
            "first_local_ip"
        }
    .end annotation

    if-eqz p1, :cond_1a

    instance-of v0, p0, Ljava/net/Inet4Address;

    if-eqz v0, :cond_1a

    invoke-static {p0}, Lio/agora/rtc2/internal/CommonUtility;->getPublicIpAddress(Ljava/net/InetAddress;)Ljava/lang/String;

    move-result-object p0

    invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result p1

    if-nez p1, :cond_19

    invoke-virtual {p2}, Ljava/lang/StringBuilder;->length()I

    move-result p1

    if-nez p1, :cond_19

    invoke-virtual {p2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    :cond_19
    return-object p0

    :cond_1a
    if-nez p1, :cond_34

    instance-of p1, p0, Ljava/net/Inet6Address;

    if-eqz p1, :cond_34

    invoke-static {p0}, Lio/agora/rtc2/internal/CommonUtility;->getPublicIpAddress(Ljava/net/InetAddress;)Ljava/lang/String;

    move-result-object p0

    invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result p1

    if-nez p1, :cond_33

    invoke-virtual {p2}, Ljava/lang/StringBuilder;->length()I

    move-result p1

    if-nez p1, :cond_33

    invoke-virtual {p2, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    :cond_33
    return-object p0

    :cond_34
    const/4 p0, 0x0

    return-object p0
.end method

.method public static getLocalHost(Z)Ljava/lang/String;
    .registers 6
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "is_ipv4"
        }
    .end annotation

    :try_start_0
    invoke-static {}, Ljava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration;

    move-result-object v0

    invoke-static {v0}, Ljava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList;

    move-result-object v0

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :cond_11
    :goto_11
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_4d

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/net/NetworkInterface;

    invoke-virtual {v2}, Ljava/net/NetworkInterface;->getName()Ljava/lang/String;

    move-result-object v3

    const-string v4, "usb"

    invoke-virtual {v3, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v3

    if-eqz v3, :cond_2a

    goto :goto_11

    :cond_2a
    invoke-virtual {v2}, Ljava/net/NetworkInterface;->getInetAddresses()Ljava/util/Enumeration;

    move-result-object v2

    invoke-static {v2}, Ljava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList;

    move-result-object v2

    invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :cond_36
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_11

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Ljava/net/InetAddress;

    invoke-static {v3, p0, v1}, Lio/agora/rtc2/internal/CommonUtility;->getIpAddressByType(Ljava/net/InetAddress;ZLjava/lang/StringBuilder;)Ljava/lang/String;

    move-result-object v3

    invoke-static {v3}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v4

    if-nez v4, :cond_36

    return-object v3

    :cond_4d
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->length()I

    move-result p0

    if-lez p0, :cond_60

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0
    :try_end_57
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_57} :catch_58

    return-object p0

    :catch_58
    move-exception p0

    const-string v0, "CommonUtility"

    const-string v1, "fail to getLocalHost"

    invoke-static {v0, v1, p0}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :cond_60
    const/4 p0, 0x0

    return-object p0
.end method

.method public static getLocalHostList()[Ljava/lang/String;
    .registers 6

    :try_start_0
    invoke-static {}, Ljava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration;

    move-result-object v0

    invoke-static {v0}, Ljava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList;

    move-result-object v0

    new-instance v1, Ljava/util/ArrayList;

    invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V

    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :cond_11
    :goto_11
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_64

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/net/NetworkInterface;

    invoke-virtual {v2}, Ljava/net/NetworkInterface;->getName()Ljava/lang/String;

    move-result-object v3

    const-string v4, "usb"

    invoke-virtual {v3, v4}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v4

    if-eqz v4, :cond_2a

    goto :goto_11

    :cond_2a
    invoke-virtual {v2}, Ljava/net/NetworkInterface;->getInetAddresses()Ljava/util/Enumeration;

    move-result-object v2

    invoke-static {v2}, Ljava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList;

    move-result-object v2

    invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v2

    :cond_36
    :goto_36
    invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z

    move-result v4

    if-eqz v4, :cond_11

    invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Ljava/net/InetAddress;

    invoke-static {v4}, Lio/agora/rtc2/internal/CommonUtility;->inetAddressToIpAddress(Ljava/net/InetAddress;)Ljava/lang/String;

    move-result-object v4

    invoke-static {v4}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v5

    if-nez v5, :cond_36

    new-instance v5, Ljava/lang/StringBuilder;

    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v4, "+"

    invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-interface {v1, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    goto :goto_36

    :cond_64
    invoke-interface {v1}, Ljava/util/List;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_8f

    invoke-interface {v1}, Ljava/util/List;->size()I

    move-result v0

    new-array v0, v0, [Ljava/lang/String;

    const/4 v2, 0x0

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :goto_75
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_86

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Ljava/lang/String;

    aput-object v3, v0, v2
    :try_end_83
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_83} :catch_87

    add-int/lit8 v2, v2, 0x1

    goto :goto_75

    :cond_86
    return-object v0

    :catch_87
    move-exception v0

    const-string v1, "CommonUtility"

    const-string v2, "fail to getLocalHostList"

    invoke-static {v1, v2, v0}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :cond_8f
    const/4 v0, 0x0

    return-object v0
.end method

.method private getNetworkInfo(Landroid/content/Context;)Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;
    .registers 7
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    new-instance v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;

    invoke-direct {v0}, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;-><init>()V

    invoke-static {p1}, Lio/agora/rtc2/internal/CommonUtility;->checkAccessNetworkState(Landroid/content/Context;)Z

    move-result v1

    const-string v2, "CommonUtility"

    if-nez v1, :cond_13

    const-string p1, "fail to getNetworkInfo, permission ACCESS_NETWORK_STATE not granted"

    invoke-static {v2, p1}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return-object v0

    :cond_13
    const/4 v1, 0x1

    invoke-static {v1}, Lio/agora/rtc2/internal/CommonUtility;->getLocalHost(Z)Ljava/lang/String;

    move-result-object v1

    invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v3

    if-nez v3, :cond_20

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->localIp4:Ljava/lang/String;

    :cond_20
    const/4 v1, 0x0

    invoke-static {v1}, Lio/agora/rtc2/internal/CommonUtility;->getLocalHost(Z)Ljava/lang/String;

    move-result-object v1

    invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v3

    if-nez v3, :cond_2d

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->localIp6:Ljava/lang/String;

    :cond_2d
    invoke-static {p1}, Lio/agora/rtc2/internal/Connectivity;->getNetworkInfo(Landroid/content/Context;)Landroid/net/NetworkInfo;

    move-result-object v1

    invoke-static {v1}, Lio/agora/rtc2/internal/Connectivity;->getNetworkType(Landroid/net/NetworkInfo;)I

    move-result v3

    iput v3, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->networkType:I

    if-eqz v1, :cond_3f

    invoke-virtual {v1}, Landroid/net/NetworkInfo;->getSubtype()I

    move-result v1

    iput v1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->networkSubtype:I

    :cond_3f
    invoke-static {}, Lio/agora/rtc2/internal/Connectivity;->getDnsList()Ljava/util/ArrayList;

    move-result-object v1

    iput-object v1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->dnsList:Ljava/util/ArrayList;

    iget v1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->networkType:I

    const/4 v3, 0x2

    const-string v4, " level = "

    if-ne v1, v3, :cond_6e

    invoke-static {p1, v0}, Lio/agora/rtc2/internal/CommonUtility;->fillWifiInfoIfPossible(Landroid/content/Context;Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;)V

    new-instance p1, Ljava/lang/StringBuilder;

    invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "networkType from WIFI, rssi = "

    :goto_56
    invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->rssi:I

    invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->signalLevel:I

    invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-static {v2, p1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_7d

    :cond_6e
    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

    if-eqz v1, :cond_7d

    invoke-virtual {v1, p1, v0}, Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;->fillCellInfoIfPossible(Landroid/content/Context;Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;)V

    new-instance p1, Ljava/lang/StringBuilder;

    invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "networkType from Phone State Listener\uff0c rssi = "

    goto :goto_56

    :cond_7d
    :goto_7d
    invoke-virtual {p0}, Lio/agora/rtc2/internal/CommonUtility;->getVpnIfconfigs()Ljava/util/ArrayList;

    move-result-object p1

    iput-object p1, v0, Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;->ifconfigs:Ljava/util/ArrayList;

    return-object v0
.end method

.method private static getPublicIpAddress(Ljava/net/InetAddress;)Ljava/lang/String;
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "address"
        }
    .end annotation

    invoke-virtual {p0}, Ljava/net/InetAddress;->isLoopbackAddress()Z

    move-result v0

    if-nez v0, :cond_17

    invoke-virtual {p0}, Ljava/net/InetAddress;->isLinkLocalAddress()Z

    move-result v0

    if-nez v0, :cond_17

    invoke-virtual {p0}, Ljava/net/InetAddress;->isAnyLocalAddress()Z

    move-result v0

    if-nez v0, :cond_17

    invoke-virtual {p0}, Ljava/net/InetAddress;->getHostAddress()Ljava/lang/String;

    move-result-object p0

    return-object p0

    :cond_17
    const/4 p0, 0x0

    return-object p0
.end method

.method private getRotationByDM()I
    .registers 3

    invoke-static {}, Lio/agora/base/internal/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    if-eqz v0, :cond_13

    invoke-static {}, Lio/agora/base/internal/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string v1, "display"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/hardware/display/DisplayManager;

    goto :goto_14

    :cond_13
    const/4 v0, 0x0

    :goto_14
    if-eqz v0, :cond_22

    const/4 v1, 0x0

    invoke-virtual {v0, v1}, Landroid/hardware/display/DisplayManager;->getDisplay(I)Landroid/view/Display;

    move-result-object v0

    if-eqz v0, :cond_22

    invoke-virtual {v0}, Landroid/view/Display;->getRotation()I

    move-result v0

    goto :goto_23

    :cond_22
    const/4 v0, -0x1

    :goto_23
    return v0
.end method

.method private getRotationByWM()I
    .registers 3

    invoke-static {}, Lio/agora/base/internal/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    if-eqz v0, :cond_14

    invoke-static {}, Lio/agora/base/internal/ContextUtils;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    const-string/jumbo v1, "window"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/view/WindowManager;

    goto :goto_15

    :cond_14
    const/4 v0, 0x0

    :goto_15
    if-eqz v0, :cond_22

    invoke-interface {v0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;

    move-result-object v0

    if-eqz v0, :cond_22

    invoke-virtual {v0}, Landroid/view/Display;->getRotation()I

    move-result v0

    goto :goto_23

    :cond_22
    const/4 v0, 0x0

    :goto_23
    return v0
.end method

.method private static getSystemProperty(Ljava/lang/String;)Ljava/lang/String;
    .registers 6
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "name"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Exception;
        }
    .end annotation

    const-string v0, "android.os.SystemProperties"

    invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;

    move-result-object v0

    const/4 v1, 0x1

    new-array v2, v1, [Ljava/lang/Class;

    const-class v3, Ljava/lang/String;

    const/4 v4, 0x0

    aput-object v3, v2, v4

    const-string v3, "get"

    invoke-virtual {v0, v3, v2}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;

    move-result-object v2

    new-array v1, v1, [Ljava/lang/Object;

    aput-object p0, v1, v4

    invoke-virtual {v2, v0, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p0

    check-cast p0, Ljava/lang/String;

    return-object p0
.end method

.method public static getSystemService(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/Object;
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "serviceName"
        }
    .end annotation

    invoke-virtual {p0, p1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object p0

    return-object p0
.end method

.method private static inetAddressToIpAddress(Ljava/net/InetAddress;)Ljava/lang/String;
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "address"
        }
    .end annotation

    invoke-virtual {p0}, Ljava/net/InetAddress;->isLoopbackAddress()Z

    move-result v0

    if-nez v0, :cond_13

    instance-of v0, p0, Ljava/net/Inet4Address;

    if-eqz v0, :cond_11

    check-cast p0, Ljava/net/Inet4Address;

    invoke-virtual {p0}, Ljava/net/Inet4Address;->getHostAddress()Ljava/lang/String;

    move-result-object p0

    return-object p0

    :cond_11
    instance-of p0, p0, Ljava/net/Inet6Address;

    :cond_13
    const/4 p0, 0x0

    return-object p0
.end method

.method private static intToInetAddress(I)Ljava/net/InetAddress;
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "hostAddress"
        }
    .end annotation

    const/4 v0, 0x4

    new-array v0, v0, [B

    and-int/lit16 v1, p0, 0xff

    int-to-byte v1, v1

    const/4 v2, 0x0

    aput-byte v1, v0, v2

    shr-int/lit8 v1, p0, 0x8

    and-int/lit16 v1, v1, 0xff

    int-to-byte v1, v1

    const/4 v2, 0x1

    aput-byte v1, v0, v2

    shr-int/lit8 v1, p0, 0x10

    and-int/lit16 v1, v1, 0xff

    int-to-byte v1, v1

    const/4 v2, 0x2

    aput-byte v1, v0, v2

    shr-int/lit8 p0, p0, 0x18

    and-int/lit16 p0, p0, 0xff

    int-to-byte p0, p0

    const/4 v1, 0x3

    aput-byte p0, v0, v1

    :try_start_21
    invoke-static {v0}, Ljava/net/InetAddress;->getByAddress([B)Ljava/net/InetAddress;

    move-result-object p0
    :try_end_25
    .catch Ljava/net/UnknownHostException; {:try_start_21 .. :try_end_25} :catch_26

    return-object p0

    :catch_26
    const/4 p0, 0x0

    return-object p0
.end method

.method public static isAppInForeground()Z
    .registers 5

    new-instance v0, Landroid/app/ActivityManager$RunningAppProcessInfo;

    invoke-direct {v0}, Landroid/app/ActivityManager$RunningAppProcessInfo;-><init>()V

    new-instance v1, Ljava/util/concurrent/CountDownLatch;

    const/4 v2, 0x1

    invoke-direct {v1, v2}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V

    new-instance v3, Lio/agora/rtc2/internal/CommonUtility$6;

    invoke-direct {v3, v0, v1}, Lio/agora/rtc2/internal/CommonUtility$6;-><init>(Landroid/app/ActivityManager$RunningAppProcessInfo;Ljava/util/concurrent/CountDownLatch;)V

    new-instance v4, Ljava/lang/Thread;

    invoke-direct {v4, v3}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V

    invoke-virtual {v4}, Ljava/lang/Thread;->start()V

    const-wide/16 v3, 0x64

    invoke-static {v1, v3, v4}, Lio/agora/base/internal/ThreadUtils;->awaitUninterruptibly(Ljava/util/concurrent/CountDownLatch;J)Z

    move-result v1

    if-nez v1, :cond_28

    const-string v0, "CommonUtility"

    const-string v1, "get App InForeground state timeout."

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return v2

    :cond_28
    iget v1, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I

    const/16 v3, 0x64

    if-eq v1, v3, :cond_36

    iget v0, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I

    const/16 v1, 0xc8

    if-ne v0, v1, :cond_35

    goto :goto_36

    :cond_35
    const/4 v2, 0x0

    :cond_36
    :goto_36
    return v2
.end method

.method public static isSimulator()Z
    .registers 8

    const-string v0, "CommonUtility"

    const-string v1, ""

    const/4 v2, 0x0

    const/4 v3, 0x1

    :try_start_6
    sget-object v4, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;
    :try_end_8
    .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_8} :catch_2c

    :try_start_8
    invoke-virtual {v4}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v5

    const-string v6, "netease"

    invoke-virtual {v5, v6}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v5
    :try_end_12
    .catch Ljava/lang/Exception; {:try_start_8 .. :try_end_12} :catch_2d

    if-eqz v5, :cond_16

    move v5, v3

    goto :goto_17

    :cond_16
    move v5, v2

    :goto_17
    :try_start_17
    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "manufacturer = "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v0, v6}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_2b
    .catch Ljava/lang/Exception; {:try_start_17 .. :try_end_2b} :catch_2e

    goto :goto_33

    :catch_2c
    move-object v4, v1

    :catch_2d
    move v5, v2

    :catch_2e
    const-string v6, "get manufacturer info fail."

    invoke-static {v0, v6}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :goto_33
    invoke-static {}, Lio/agora/rtc2/internal/CommonUtility;->isSimulatorProperty()Z

    move-result v0

    if-eqz v0, :cond_3b

    add-int/lit8 v5, v5, 0x1

    :cond_3b
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v6, 0x1c

    const-string/jumbo v7, "welldo"

    if-le v0, v6, :cond_6e

    const-string v0, "nokia"

    invoke-virtual {v0, v4}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_61

    sget-object v0, Landroid/os/Build;->DEVICE:Ljava/lang/String;

    const-string v1, "Nokia_N1"

    invoke-virtual {v1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_60

    sget-object v0, Landroid/os/Build;->MODEL:Ljava/lang/String;

    const-string v1, "N1"

    invoke-virtual {v1, v0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_61

    :cond_60
    return v2

    :cond_61
    if-lez v5, :cond_87

    invoke-virtual {v4}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v0, v7}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v0

    if-nez v0, :cond_87

    return v3

    :cond_6e
    invoke-virtual {v1}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v0

    const-string v1, "unknown"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_7c

    if-lez v5, :cond_87

    :cond_7c
    invoke-virtual {v4}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v0, v7}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v0

    if-nez v0, :cond_87

    return v3

    :cond_87
    return v2
.end method

.method private static isSimulatorProperty()Z
    .registers 13

    const-string v0, "android"

    const-string v1, "CommonUtility"

    const-string v2, ""

    sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;

    const/4 v4, 0x0

    const/4 v5, 0x1

    :try_start_a
    const-string v6, "ro.hardware"

    invoke-static {v6}, Lio/agora/rtc2/internal/CommonUtility;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v6
    :try_end_10
    .catch Ljava/lang/Exception; {:try_start_a .. :try_end_10} :catch_20

    if-eqz v6, :cond_1e

    :try_start_12
    invoke-virtual {v6}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v7

    const-string v8, "intel"

    invoke-virtual {v7, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v7
    :try_end_1c
    .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_1c} :catch_21

    if-eqz v7, :cond_26

    :cond_1e
    move v7, v5

    goto :goto_27

    :catch_20
    move-object v6, v2

    :catch_21
    const-string v7, "get property hardware fail."

    invoke-static {v1, v7}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :cond_26
    move v7, v4

    :goto_27
    :try_start_27
    const-string v8, "os.arch"

    invoke-static {v8}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v8
    :try_end_2d
    .catch Ljava/lang/Exception; {:try_start_27 .. :try_end_2d} :catch_4a

    if-eqz v8, :cond_47

    :try_start_2f
    invoke-virtual {v8}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v9

    const-string v10, "i686"

    invoke-virtual {v9, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v9

    if-eqz v9, :cond_50

    invoke-virtual {v3}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v9

    const-string v10, "asus"

    invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v9
    :try_end_45
    .catch Ljava/lang/Exception; {:try_start_2f .. :try_end_45} :catch_4b

    if-nez v9, :cond_50

    :cond_47
    add-int/lit8 v7, v7, 0x1

    goto :goto_50

    :catch_4a
    move-object v8, v2

    :catch_4b
    const-string v9, "get property arch fail."

    invoke-static {v1, v9}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :cond_50
    :goto_50
    sget v9, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v10, 0x1c

    if-le v9, v10, :cond_ca

    if-eqz v6, :cond_70

    invoke-virtual {v6}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v9

    const-string v10, "ttvm"

    invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v9

    if-nez v9, :cond_70

    invoke-virtual {v6}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;

    move-result-object v9

    const-string v10, "nox"

    invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v9

    if-eqz v9, :cond_72

    :cond_70
    add-int/lit8 v7, v7, 0x1

    :cond_72
    :try_start_72
    const-string v9, "ro.build.flavor"

    invoke-static {v9}, Lio/agora/rtc2/internal/CommonUtility;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v9
    :try_end_78
    .catch Ljava/lang/Exception; {:try_start_72 .. :try_end_78} :catch_8d

    if-eqz v9, :cond_8a

    :try_start_7a
    const-string v10, "vbox"

    invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v10

    if-nez v10, :cond_8a

    const-string v10, "sdk_gphone"

    invoke-virtual {v9, v10}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v10
    :try_end_88
    .catch Ljava/lang/Exception; {:try_start_7a .. :try_end_88} :catch_8e

    if-eqz v10, :cond_93

    :cond_8a
    add-int/lit8 v7, v7, 0x1

    goto :goto_93

    :catch_8d
    move-object v9, v2

    :catch_8e
    const-string v10, "get property buildFlavor fail."

    invoke-static {v1, v10}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :cond_93
    :goto_93
    :try_start_93
    const-string v10, "ro.product.board"

    invoke-static {v10}, Lio/agora/rtc2/internal/CommonUtility;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v10
    :try_end_99
    .catch Ljava/lang/Exception; {:try_start_93 .. :try_end_99} :catch_ac

    if-eqz v10, :cond_a9

    :try_start_9b
    invoke-virtual {v10, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v11

    if-nez v11, :cond_a9

    const-string v11, "goldfish"

    invoke-virtual {v10, v11}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v11
    :try_end_a7
    .catch Ljava/lang/Exception; {:try_start_9b .. :try_end_a7} :catch_ad

    if-eqz v11, :cond_b2

    :cond_a9
    add-int/lit8 v7, v7, 0x1

    goto :goto_b2

    :catch_ac
    move-object v10, v2

    :catch_ad
    const-string v11, "get property productBoard fail."

    invoke-static {v1, v11}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :cond_b2
    :goto_b2
    :try_start_b2
    const-string v11, "ro.board.platform"

    invoke-static {v11}, Lio/agora/rtc2/internal/CommonUtility;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v11
    :try_end_b8
    .catch Ljava/lang/Exception; {:try_start_b2 .. :try_end_b8} :catch_c3

    if-eqz v11, :cond_c0

    :try_start_ba
    invoke-virtual {v11, v0}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v0
    :try_end_be
    .catch Ljava/lang/Exception; {:try_start_ba .. :try_end_be} :catch_c4

    if-eqz v0, :cond_cd

    :cond_c0
    add-int/lit8 v7, v7, 0x1

    goto :goto_cd

    :catch_c3
    move-object v11, v2

    :catch_c4
    const-string v0, "get property boardPlatform fail."

    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_cd

    :cond_ca
    move-object v9, v2

    move-object v10, v9

    move-object v11, v10

    :cond_cd
    :goto_cd
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v12, "suspectCount = "

    invoke-virtual {v0, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v12, ", hardware = "

    invoke-virtual {v0, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v6, ", arch = "

    invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v6, ", baseBandVersion = "

    invoke-virtual {v0, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v2, ", buildFlavor = "

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v2, ", productBoard = "

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v2, ", boardPlatform = "

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v2, ", manufacturer = "

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V

    if-lez v7, :cond_11c

    move v4, v5

    :cond_11c
    return v4
.end method

.method public static isSpeakerphoneEnabled(Landroid/content/Context;)I
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    if-nez p0, :cond_b

    const-string p0, "CommonUtility"

    const-string v0, "fail to isSpeakerphoneEnabled, context null"

    invoke-static {p0, v0}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    const/4 p0, -0x1

    return p0

    :cond_b
    const-string v0, "audio"

    invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object p0

    check-cast p0, Landroid/media/AudioManager;

    invoke-virtual {p0}, Landroid/media/AudioManager;->isSpeakerphoneOn()Z

    move-result p0

    return p0
.end method

.method private monitorOrientationChange(Landroid/content/Context;Z)V
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "enable"
        }
    .end annotation

    if-eqz p2, :cond_9

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/CommonUtility;->enableDisplayListener(Landroid/content/Context;)V

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/CommonUtility;->regiseterBroadcaster(Landroid/content/Context;)V

    goto :goto_f

    :cond_9
    invoke-direct {p0}, Lio/agora/rtc2/internal/CommonUtility;->disableDisplayListener()V

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/CommonUtility;->unregisterBroadcaster(Landroid/content/Context;)V

    :goto_f
    return-void
.end method

.method private native nativeAudioRoutingPhoneChanged(ZII)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0,
            0x0
        }
        names = {
            "enableAudio",
            "event",
            "arg"
        }
    .end annotation
.end method

.method private native nativeNotifyAddressBound(Ljava/lang/String;)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "addr"
        }
    .end annotation
.end method

.method private native nativeNotifyForegroundChanged(Z)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "isForeground"
        }
    .end annotation
.end method

.method private native nativeNotifyGravityOriChange(I)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "mOrientation"
        }
    .end annotation
.end method

.method private native nativeNotifyNetworkChange(Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "networkInfo"
        }
    .end annotation
.end method

.method private regiseterBroadcaster(Landroid/content/Context;)V
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    if-nez p1, :cond_3

    return-void

    :cond_3
    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationObserver:Landroid/content/BroadcastReceiver;

    if-eqz v0, :cond_8

    return-void

    :cond_8
    new-instance v0, Lio/agora/rtc2/internal/CommonUtility$9;

    invoke-direct {v0, p0}, Lio/agora/rtc2/internal/CommonUtility$9;-><init>(Lio/agora/rtc2/internal/CommonUtility;)V

    iput-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationObserver:Landroid/content/BroadcastReceiver;

    new-instance v0, Landroid/content/IntentFilter;

    invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V

    const-string v1, "android.intent.action.CONFIGURATION_CHANGED"

    invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationObserver:Landroid/content/BroadcastReceiver;

    invoke-virtual {p1, v1, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

    const-string p1, "CommonUtility"

    const-string v0, "[regiseterBroadcaster] done!"

    invoke-static {p1, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method

.method public static safeLoadLibrary(Ljava/lang/String;)I
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "path"
        }
    .end annotation

    invoke-static {p0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v0

    if-eqz v0, :cond_8

    const/4 p0, -0x2

    return p0

    :cond_8
    const/4 v0, 0x0

    const/4 v1, -0x1

    :try_start_a
    invoke-static {p0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
    :try_end_d
    .catch Ljava/lang/SecurityException; {:try_start_a .. :try_end_d} :catch_e
    .catch Ljava/lang/UnsatisfiedLinkError; {:try_start_a .. :try_end_d} :catch_e
    .catch Ljava/lang/NullPointerException; {:try_start_a .. :try_end_d} :catch_e
    .catch Ljava/lang/Exception; {:try_start_a .. :try_end_d} :catch_e

    goto :goto_f

    :catch_e
    move v0, v1

    :goto_f
    if-eqz v0, :cond_27

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "failed to load library: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p0

    const-string v1, "CommonUtility"

    invoke-static {v1, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    :cond_27
    return v0
.end method

.method public static setIgnoreMonitor(Z)V
    .registers 1
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "ignore"
        }
    .end annotation

    sput-boolean p0, Lio/agora/rtc2/internal/CommonUtility;->ignoreMonitor:Z

    return-void
.end method

.method private stopMonitor()V
    .registers 7

    const-string v0, "CommonUtility"

    const-string v1, "stopMonitor()"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/content/Context;

    if-nez v1, :cond_12

    return-void

    :cond_12
    const/4 v2, 0x0

    const/4 v3, 0x0

    :try_start_14
    iget-object v4, p0, Lio/agora/rtc2/internal/CommonUtility;->mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

    if-eqz v4, :cond_2c

    const-string v4, "phone"

    invoke-virtual {v1, v4}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Landroid/telephony/TelephonyManager;

    iget-object v5, p0, Lio/agora/rtc2/internal/CommonUtility;->mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

    invoke-virtual {v4, v5, v2}, Landroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V

    iput-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;
    :try_end_27
    .catch Ljava/lang/Exception; {:try_start_14 .. :try_end_27} :catch_28

    goto :goto_2c

    :catch_28
    move-exception v4

    invoke-virtual {v4}, Ljava/lang/Exception;->printStackTrace()V

    :cond_2c
    :goto_2c
    :try_start_2c
    iget-object v4, p0, Lio/agora/rtc2/internal/CommonUtility;->mConnectionBroadcastReceiver:Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;

    if-eqz v4, :cond_3a

    invoke-virtual {v1, v4}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    iput-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mConnectionBroadcastReceiver:Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;
    :try_end_35
    .catch Ljava/lang/Exception; {:try_start_2c .. :try_end_35} :catch_36

    goto :goto_3a

    :catch_36
    move-exception v4

    invoke-virtual {v4}, Ljava/lang/Exception;->printStackTrace()V

    :cond_3a
    :goto_3a
    :try_start_3a
    iget-object v4, p0, Lio/agora/rtc2/internal/CommonUtility;->mPowerChangeReceiver:Lio/agora/rtc2/internal/PowerChangeReceiver;

    if-eqz v4, :cond_48

    invoke-virtual {v1, v4}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    iput-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mPowerChangeReceiver:Lio/agora/rtc2/internal/PowerChangeReceiver;
    :try_end_43
    .catch Ljava/lang/Exception; {:try_start_3a .. :try_end_43} :catch_44

    goto :goto_48

    :catch_44
    move-exception v4

    invoke-virtual {v4}, Ljava/lang/Exception;->printStackTrace()V

    :cond_48
    :goto_48
    :try_start_48
    iget-object v4, p0, Lio/agora/rtc2/internal/CommonUtility;->mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;

    if-eqz v4, :cond_60

    invoke-virtual {v1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object v4

    check-cast v4, Landroid/app/Application;

    iget-object v5, p0, Lio/agora/rtc2/internal/CommonUtility;->mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;

    invoke-virtual {v4, v5}, Landroid/app/Application;->unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V

    iput-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;
    :try_end_59
    .catch Ljava/lang/Exception; {:try_start_48 .. :try_end_59} :catch_5a

    goto :goto_60

    :catch_5a
    move-exception v3

    const-string v4, "unregister ProcessLifecycleOwner failed "

    invoke-static {v0, v4, v3}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :cond_60
    :goto_60
    :try_start_60
    invoke-direct {p0, v1, v2}, Lio/agora/rtc2/internal/CommonUtility;->monitorOrientationChange(Landroid/content/Context;Z)V
    :try_end_63
    .catch Ljava/lang/Exception; {:try_start_60 .. :try_end_63} :catch_64

    goto :goto_6a

    :catch_64
    move-exception v1

    const-string v2, "Unable to monitorOrientationChange, "

    invoke-static {v0, v2, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_6a
    invoke-virtual {p0}, Lio/agora/rtc2/internal/CommonUtility;->closeGravityMonitor()I

    return-void
.end method

.method private unregisterBroadcaster(Landroid/content/Context;)V
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "context"
        }
    .end annotation

    if-eqz p1, :cond_11

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationObserver:Landroid/content/BroadcastReceiver;

    if-nez v0, :cond_7

    goto :goto_11

    :cond_7
    invoke-virtual {p1, v0}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

    const-string p1, "CommonUtility"

    const-string v0, "[unregisterBroadcaster] done!"

    invoke-static {p1, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    :cond_11
    :goto_11
    return-void
.end method


# virtual methods
.method public VPNBehindAddress()I
    .registers 2

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    if-nez v0, :cond_c

    const/4 v0, 0x1

    return v0

    :cond_c
    invoke-static {v0}, Lio/agora/rtc2/internal/Connectivity;->VPNBehindAddress(Landroid/content/Context;)I

    move-result v0

    return v0
.end method

.method public bindSocket2Network(ILjava/lang/String;)V
    .registers 11
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "socketfd",
            "address"
        }
    .end annotation

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x15

    if-ge v0, v1, :cond_7

    return-void

    :cond_7
    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    const-string v1, "connectivity"

    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/net/ConnectivityManager;

    new-instance v1, Landroid/net/NetworkRequest$Builder;

    invoke-direct {v1}, Landroid/net/NetworkRequest$Builder;-><init>()V

    const/4 v2, 0x0

    invoke-virtual {v1, v2}, Landroid/net/NetworkRequest$Builder;->addTransportType(I)Landroid/net/NetworkRequest$Builder;

    move-result-object v1

    invoke-virtual {v1}, Landroid/net/NetworkRequest$Builder;->build()Landroid/net/NetworkRequest;

    move-result-object v7

    invoke-virtual {p2}, Ljava/lang/String;->toString()Ljava/lang/String;

    move-result-object v4

    iget-object p2, p0, Lio/agora/rtc2/internal/CommonUtility;->mobileNetworkCallback:Landroid/net/ConnectivityManager$NetworkCallback;

    if-eqz p2, :cond_30

    invoke-virtual {v0, p2}, Landroid/net/ConnectivityManager;->unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V

    :cond_30
    new-instance p2, Lio/agora/rtc2/internal/CommonUtility$4;

    move-object v1, p2

    move-object v2, p0

    move-object v3, v0

    move v5, p1

    move-object v6, p0

    invoke-direct/range {v1 .. v6}, Lio/agora/rtc2/internal/CommonUtility$4;-><init>(Lio/agora/rtc2/internal/CommonUtility;Landroid/net/ConnectivityManager;Ljava/lang/String;ILio/agora/rtc2/internal/CommonUtility;)V

    iput-object p2, p0, Lio/agora/rtc2/internal/CommonUtility;->mobileNetworkCallback:Landroid/net/ConnectivityManager$NetworkCallback;

    :try_start_3c
    invoke-virtual {v0, v7, p2}, Landroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V
    :try_end_3f
    .catch Ljava/lang/Exception; {:try_start_3c .. :try_end_3f} :catch_40

    goto :goto_5e

    :catch_40
    move-exception p1

    const/4 p2, 0x0

    iput-object p2, p0, Lio/agora/rtc2/internal/CommonUtility;->mobileNetworkCallback:Landroid/net/ConnectivityManager$NetworkCallback;

    new-instance p2, Ljava/lang/StringBuilder;

    invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v0, "requestNetwork failed "

    invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/Exception;->toString()Ljava/lang/String;

    move-result-object p1

    invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    const-string p2, "CommonUtility"

    invoke-static {p2, p1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    :goto_5e
    return-void
.end method

.method public checkOrientation(I)I
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "orientation"
        }
    .end annotation

    const/4 v0, -0x1

    if-ne p1, v0, :cond_4

    return v0

    :cond_4
    const/16 v0, 0x154

    if-gt p1, v0, :cond_c

    const/16 v0, 0x14

    if-ge p1, v0, :cond_18

    :cond_c
    iget v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    const/16 v1, 0x10e

    if-eq v0, v1, :cond_18

    :goto_12
    iput v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/CommonUtility;->nativeNotifyGravityOriChange(I)V

    goto :goto_48

    :cond_18
    const/16 v0, 0x46

    if-le p1, v0, :cond_27

    const/16 v0, 0x6e

    if-ge p1, v0, :cond_27

    iget v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    const/16 v1, 0xb4

    if-eq v0, v1, :cond_27

    goto :goto_12

    :cond_27
    const/16 v0, 0xa0

    if-le p1, v0, :cond_36

    const/16 v0, 0xc8

    if-ge p1, v0, :cond_36

    iget v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    const/16 v1, 0x5a

    if-eq v0, v1, :cond_36

    goto :goto_12

    :cond_36
    const/16 v0, 0xfa

    if-le p1, v0, :cond_48

    const/16 v0, 0x122

    if-ge p1, v0, :cond_48

    iget p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    if-eqz p1, :cond_48

    const/4 p1, 0x0

    iput p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/CommonUtility;->nativeNotifyGravityOriChange(I)V

    :cond_48
    :goto_48
    iget p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mLastOrientation:I

    return p1
.end method

.method public closeGravityMonitor()I
    .registers 5

    const-string v0, "CommonUtility"

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/content/Context;

    const/4 v2, -0x1

    if-nez v1, :cond_e

    return v2

    :cond_e
    :try_start_e
    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationListener:Landroid/view/OrientationEventListener;

    if-eqz v1, :cond_1f

    invoke-virtual {v1}, Landroid/view/OrientationEventListener;->disable()V

    const/4 v1, 0x0

    iput-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationListener:Landroid/view/OrientationEventListener;

    const-string v1, "[closeGravityMonitor] done!"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v0, 0x0

    return v0

    :cond_1f
    const-string v1, "[closeGravityMonitor] mOrientationListener is null!"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_24
    .catch Ljava/lang/Exception; {:try_start_e .. :try_end_24} :catch_25

    goto :goto_2b

    :catch_25
    move-exception v1

    const-string v3, "Unable to close OrientationEventListener, "

    invoke-static {v0, v3, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_2b
    return v2
.end method

.method public dispose()V
    .registers 4

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mThreadChecker:Lio/agora/base/internal/ThreadUtils$ThreadChecker;

    invoke-virtual {v0}, Lio/agora/base/internal/ThreadUtils$ThreadChecker;->checkIsOnValidThread()V

    iget-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisposed:Z

    if-eqz v0, :cond_a

    return-void

    :cond_a
    invoke-static {}, Lio/agora/rtc2/internal/HardwareEarMonitorController;->destroy()V

    const/4 v0, 0x1

    iput-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisposed:Z

    const-wide/16 v1, 0x0

    iput-wide v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mNativeHandle:J

    const-string v1, "CommonUtility"

    const-string v2, "dispose()"

    invoke-static {v1, v2}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    new-instance v2, Lio/agora/rtc2/internal/CommonUtility$2;

    invoke-direct {v2, p0}, Lio/agora/rtc2/internal/CommonUtility$2;-><init>(Lio/agora/rtc2/internal/CommonUtility;)V

    invoke-virtual {v1, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

    new-instance v1, Ljava/util/concurrent/CountDownLatch;

    invoke-direct {v1, v0}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    new-instance v2, Lio/agora/rtc2/internal/CommonUtility$3;

    invoke-direct {v2, p0, v1}, Lio/agora/rtc2/internal/CommonUtility$3;-><init>(Lio/agora/rtc2/internal/CommonUtility;Ljava/util/concurrent/CountDownLatch;)V

    invoke-virtual {v0, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

    :try_start_34
    invoke-virtual {v1}, Ljava/util/concurrent/CountDownLatch;->await()V
    :try_end_37
    .catch Ljava/lang/InterruptedException; {:try_start_34 .. :try_end_37} :catch_38

    goto :goto_3c

    :catch_38
    move-exception v0

    invoke-virtual {v0}, Ljava/lang/InterruptedException;->printStackTrace()V

    :goto_3c
    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mListener:Lio/agora/rtc2/internal/CommonUtility$Listener;

    if-eqz v0, :cond_43

    invoke-interface {v0}, Lio/agora/rtc2/internal/CommonUtility$Listener;->onDispose()V

    :cond_43
    return-void
.end method

.method public getAssetsCacheFile(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    .registers 9
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0,
            0x0
        }
        names = {
            "context",
            "pathOrUri",
            "fileName"
        }
    .end annotation

    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "getAssetsCacheFile filePath: "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    const-string v1, "CommonUtility"

    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V

    const-string v0, "content://"

    invoke-virtual {p2, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0

    new-instance v1, Ljava/io/File;

    invoke-virtual {p1}, Landroid/content/Context;->getCacheDir()Ljava/io/File;

    move-result-object v2

    invoke-direct {v1, v2, p3}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V

    const/4 p3, 0x0

    :try_start_26
    invoke-virtual {v1}, Ljava/io/File;->exists()Z

    move-result v2

    if-eqz v2, :cond_2f

    invoke-virtual {v1}, Ljava/io/File;->delete()Z
    :try_end_2f
    .catch Ljava/lang/SecurityException; {:try_start_26 .. :try_end_2f} :catch_da

    :cond_2f
    if-eqz v0, :cond_49

    :try_start_31
    new-instance v0, Ljava/io/FileInputStream;

    invoke-virtual {p1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object p1

    invoke-static {p2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object p2

    const-string v2, "r"

    invoke-virtual {p1, p2, v2}, Landroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;

    move-result-object p1

    invoke-virtual {p1}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;

    move-result-object p1

    invoke-direct {v0, p1}, Ljava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;)V

    goto :goto_51

    :cond_49
    invoke-virtual {p1}, Landroid/content/Context;->getAssets()Landroid/content/res/AssetManager;

    move-result-object p1

    invoke-virtual {p1, p2}, Landroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;

    move-result-object v0
    :try_end_51
    .catch Ljava/io/IOException; {:try_start_31 .. :try_end_51} :catch_ae
    .catch Ljava/lang/SecurityException; {:try_start_31 .. :try_end_51} :catch_96
    .catchall {:try_start_31 .. :try_end_51} :catchall_93

    :goto_51
    :try_start_51
    new-instance p1, Ljava/io/FileOutputStream;

    invoke-direct {p1, v1}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
    :try_end_56
    .catch Ljava/io/IOException; {:try_start_51 .. :try_end_56} :catch_90
    .catch Ljava/lang/SecurityException; {:try_start_51 .. :try_end_56} :catch_8d
    .catchall {:try_start_51 .. :try_end_56} :catchall_8a

    const/16 p2, 0x400

    :try_start_58
    new-array p2, p2, [B

    :goto_5a
    invoke-virtual {v0, p2}, Ljava/io/InputStream;->read([B)I

    move-result v2

    if-lez v2, :cond_65

    const/4 v3, 0x0

    invoke-virtual {p1, p2, v3, v2}, Ljava/io/FileOutputStream;->write([BII)V
    :try_end_64
    .catch Ljava/io/IOException; {:try_start_58 .. :try_end_64} :catch_85
    .catch Ljava/lang/SecurityException; {:try_start_58 .. :try_end_64} :catch_80
    .catchall {:try_start_58 .. :try_end_64} :catchall_79

    goto :goto_5a

    :cond_65
    if-eqz v0, :cond_6d

    :try_start_67
    invoke-virtual {v0}, Ljava/io/InputStream;->close()V

    goto :goto_6d

    :catch_6b
    move-exception p1

    goto :goto_71

    :cond_6d
    :goto_6d
    invoke-virtual {p1}, Ljava/io/FileOutputStream;->close()V
    :try_end_70
    .catch Ljava/io/IOException; {:try_start_67 .. :try_end_70} :catch_6b

    goto :goto_74

    :goto_71
    invoke-virtual {p1}, Ljava/io/IOException;->printStackTrace()V

    :goto_74
    invoke-virtual {v1}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;

    move-result-object p1

    return-object p1

    :catchall_79
    move-exception p2

    move-object p3, v0

    move-object v4, p2

    move-object p2, p1

    move-object p1, v4

    goto/16 :goto_c8

    :catch_80
    move-exception p2

    move-object v4, p2

    move-object p2, p1

    move-object p1, v4

    goto :goto_99

    :catch_85
    move-exception p2

    move-object v4, p2

    move-object p2, p1

    move-object p1, v4

    goto :goto_b1

    :catchall_8a
    move-exception p1

    move-object p2, p3

    goto :goto_c7

    :catch_8d
    move-exception p1

    move-object p2, p3

    goto :goto_99

    :catch_90
    move-exception p1

    move-object p2, p3

    goto :goto_b1

    :catchall_93
    move-exception p1

    move-object p2, p3

    goto :goto_c8

    :catch_96
    move-exception p1

    move-object p2, p3

    move-object v0, p2

    :goto_99
    :try_start_99
    invoke-virtual {p1}, Ljava/lang/SecurityException;->printStackTrace()V
    :try_end_9c
    .catchall {:try_start_99 .. :try_end_9c} :catchall_c6

    if-eqz v0, :cond_a4

    :try_start_9e
    invoke-virtual {v0}, Ljava/io/InputStream;->close()V

    goto :goto_a4

    :catch_a2
    move-exception p1

    goto :goto_aa

    :cond_a4
    :goto_a4
    if-eqz p2, :cond_ad

    invoke-virtual {p2}, Ljava/io/FileOutputStream;->close()V
    :try_end_a9
    .catch Ljava/io/IOException; {:try_start_9e .. :try_end_a9} :catch_a2

    goto :goto_ad

    :goto_aa
    invoke-virtual {p1}, Ljava/io/IOException;->printStackTrace()V

    :cond_ad
    :goto_ad
    return-object p3

    :catch_ae
    move-exception p1

    move-object p2, p3

    move-object v0, p2

    :goto_b1
    :try_start_b1
    invoke-virtual {p1}, Ljava/io/IOException;->printStackTrace()V
    :try_end_b4
    .catchall {:try_start_b1 .. :try_end_b4} :catchall_c6

    if-eqz v0, :cond_bc

    :try_start_b6
    invoke-virtual {v0}, Ljava/io/InputStream;->close()V

    goto :goto_bc

    :catch_ba
    move-exception p1

    goto :goto_c2

    :cond_bc
    :goto_bc
    if-eqz p2, :cond_c5

    invoke-virtual {p2}, Ljava/io/FileOutputStream;->close()V
    :try_end_c1
    .catch Ljava/io/IOException; {:try_start_b6 .. :try_end_c1} :catch_ba

    goto :goto_c5

    :goto_c2
    invoke-virtual {p1}, Ljava/io/IOException;->printStackTrace()V

    :cond_c5
    :goto_c5
    return-object p3

    :catchall_c6
    move-exception p1

    :goto_c7
    move-object p3, v0

    :goto_c8
    if-eqz p3, :cond_d0

    :try_start_ca
    invoke-virtual {p3}, Ljava/io/InputStream;->close()V

    goto :goto_d0

    :catch_ce
    move-exception p2

    goto :goto_d6

    :cond_d0
    :goto_d0
    if-eqz p2, :cond_d9

    invoke-virtual {p2}, Ljava/io/FileOutputStream;->close()V
    :try_end_d5
    .catch Ljava/io/IOException; {:try_start_ca .. :try_end_d5} :catch_ce

    goto :goto_d9

    :goto_d6
    invoke-virtual {p2}, Ljava/io/IOException;->printStackTrace()V

    :cond_d9
    :goto_d9
    throw p1

    :catch_da
    move-exception p1

    invoke-virtual {p1}, Ljava/lang/SecurityException;->printStackTrace()V

    return-object p3
.end method

.method public getBatteryLifePercent()I
    .registers 2

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    if-eqz v0, :cond_d

    iget v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mBatteryPercentage:I

    return v0

    :cond_d
    const/16 v0, 0xff

    return v0
.end method

.method public getDisplayRotation()I
    .registers 4

    iget-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mUpdateRotationTrigger:Z

    if-nez v0, :cond_c

    iget v0, p0, Lio/agora/rtc2/internal/CommonUtility;->lastOrientation:I

    const/4 v1, -0x1

    if-eq v0, v1, :cond_c

    iget v0, p0, Lio/agora/rtc2/internal/CommonUtility;->lastOrientation:I

    return v0

    :cond_c
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x11

    if-lt v0, v1, :cond_18

    invoke-direct {p0}, Lio/agora/rtc2/internal/CommonUtility;->getRotationByDM()I

    move-result v0

    if-gez v0, :cond_1c

    :cond_18
    invoke-direct {p0}, Lio/agora/rtc2/internal/CommonUtility;->getRotationByWM()I

    move-result v0

    :cond_1c
    iget v1, p0, Lio/agora/rtc2/internal/CommonUtility;->lastOrientation:I

    if-eq v1, v0, :cond_36

    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, "getDisplayRotation: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    const-string v2, "CommonUtility"

    invoke-static {v2, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    :cond_36
    iput v0, p0, Lio/agora/rtc2/internal/CommonUtility;->lastOrientation:I

    return v0
.end method

.method getHandler()Landroid/os/Handler;
    .registers 2

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    return-object v0
.end method

.method public getNativeHandle()J
    .registers 3

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mThreadChecker:Lio/agora/base/internal/ThreadUtils$ThreadChecker;

    invoke-virtual {v0}, Lio/agora/base/internal/ThreadUtils$ThreadChecker;->checkIsOnValidThread()V

    iget-wide v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mNativeHandle:J

    return-wide v0
.end method

.method public getNetworkInfo()Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;
    .registers 2

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    if-eqz v0, :cond_f

    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/CommonUtility;->getNetworkInfo(Landroid/content/Context;)Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;

    move-result-object v0

    return-object v0

    :cond_f
    const/4 v0, 0x0

    return-object v0
.end method

.method public getNetworkType()I
    .registers 4

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    const/4 v1, -0x1

    if-nez v0, :cond_c

    return v1

    :cond_c
    invoke-static {v0}, Lio/agora/rtc2/internal/CommonUtility;->checkAccessNetworkState(Landroid/content/Context;)Z

    move-result v2

    if-eqz v2, :cond_17

    invoke-static {v0}, Lio/agora/rtc2/internal/Connectivity;->getNetworkType(Landroid/content/Context;)I

    move-result v0

    return v0

    :cond_17
    const-string v0, "CommonUtility"

    const-string v2, "fail to getNetworkType, permission ACCESS_NETWORK_STATE not granted"

    invoke-static {v0, v2}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V

    return v1
.end method

.method getProcessLifecycleOwner()Lio/agora/rtc2/internal/ProcessLifecycleOwner;
    .registers 2

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;

    return-object v0
.end method

.method public getRealFilePath(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
    .registers 6
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "url"
        }
    .end annotation

    const-string v0, ""

    if-eqz p1, :cond_2d

    invoke-static {p2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v1

    if-eqz v1, :cond_b

    goto :goto_2d

    :cond_b
    const/4 v1, 0x0

    const-string v2, "/assets/"

    invoke-virtual {p2, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v2

    if-eqz v2, :cond_19

    invoke-static {p1, p2}, Lio/agora/rtc2/internal/CommonUtility;->getAssetsFilePath(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    goto :goto_29

    :cond_19
    const-string v2, "content://"

    invoke-virtual {p2, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v2

    if-eqz v2, :cond_29

    invoke-static {p2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object p2

    invoke-static {p1, p2}, Lio/agora/rtc2/internal/CommonUtility;->getContentFilePath(Landroid/content/Context;Landroid/net/Uri;)Ljava/lang/String;

    move-result-object v1

    :cond_29
    :goto_29
    if-eqz v1, :cond_2c

    move-object v0, v1

    :cond_2c
    return-object v0

    :cond_2d
    :goto_2d
    const-string p1, "getRealFilePath failed for init error"

    invoke-static {p1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;)V

    return-object v0
.end method

.method public getVpnIfconfigs()Ljava/util/ArrayList;
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/ArrayList<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    :try_start_5
    invoke-static {}, Ljava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration;

    move-result-object v1

    invoke-static {v1}, Ljava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList;

    move-result-object v1

    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_11
    :goto_11
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v2

    if-eqz v2, :cond_4d

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/net/NetworkInterface;

    invoke-virtual {v2}, Ljava/net/NetworkInterface;->getName()Ljava/lang/String;

    move-result-object v2

    const-string v3, "tun"

    invoke-virtual {v2, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v3

    if-nez v3, :cond_41

    const-string v3, "ppp"

    invoke-virtual {v2, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v3

    if-nez v3, :cond_41

    const-string v3, "ipsec"

    invoke-virtual {v2, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v3

    if-nez v3, :cond_41

    const-string v3, "tap"

    invoke-virtual {v2, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v3

    if-eqz v3, :cond_11

    :cond_41
    invoke-virtual {v0, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
    :try_end_44
    .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_44} :catch_45

    goto :goto_11

    :catch_45
    move-exception v1

    const-string v2, "CommonUtility"

    const-string v3, "Fail to get network interfaces array list. "

    invoke-static {v2, v3, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :cond_4d
    return-object v0
.end method

.method public notifyAddressBound(Ljava/lang/String;)V
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "addr"
        }
    .end annotation

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/CommonUtility;->nativeNotifyAddressBound(Ljava/lang/String;)V

    return-void
.end method

.method onAudioRoutingPhoneChanged(ZII)V
    .registers 8
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x10,
            0x10,
            0x10
        }
        names = {
            "enableAudio",
            "event",
            "arg"
        }
    .end annotation

    iget-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisposed:Z

    if-nez v0, :cond_3d

    iget-wide v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mNativeHandle:J

    const-wide/16 v2, 0x0

    cmp-long v0, v0, v2

    if-nez v0, :cond_d

    goto :goto_3d

    :cond_d
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "onAudioRoutingPhoneChanged() enableAudio:"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    const-string v1, ", event:"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v1, ", arg: "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    const-string v1, "CommonUtility"

    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    invoke-direct {p0, p1, p2, p3}, Lio/agora/rtc2/internal/CommonUtility;->nativeAudioRoutingPhoneChanged(ZII)V

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mListener:Lio/agora/rtc2/internal/CommonUtility$Listener;

    if-eqz v0, :cond_3d

    invoke-interface {v0, p1, p2, p3}, Lio/agora/rtc2/internal/CommonUtility$Listener;->onAudioRoutingPhoneChanged(ZII)V

    :cond_3d
    :goto_3d
    return-void
.end method

.method onForegroundChanged(Z)V
    .registers 6
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "foreground"
        }
    .end annotation

    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "onForegroundChanged() "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    const-string v1, "CommonUtility"

    invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    iget-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisposed:Z

    if-eqz v0, :cond_1b

    return-void

    :cond_1b
    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mListener:Lio/agora/rtc2/internal/CommonUtility$Listener;

    if-eqz v0, :cond_22

    invoke-interface {v0, p1}, Lio/agora/rtc2/internal/CommonUtility$Listener;->onForegroundChanged(Z)V

    :cond_22
    iget-wide v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mNativeHandle:J

    const-wide/16 v2, 0x0

    cmp-long v0, v0, v2

    if-eqz v0, :cond_2d

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/CommonUtility;->nativeNotifyForegroundChanged(Z)V

    :cond_2d
    return-void
.end method

.method onNetworkChange()V
    .registers 5

    iget-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisposed:Z

    if-nez v0, :cond_2a

    iget-wide v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mNativeHandle:J

    const-wide/16 v2, 0x0

    cmp-long v0, v0, v2

    if-nez v0, :cond_d

    goto :goto_2a

    :cond_d
    const-string v0, "CommonUtility"

    const-string v1, "onNetworkChange()"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/CommonUtility;->getNetworkInfo(Landroid/content/Context;)Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;

    move-result-object v0

    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/CommonUtility;->nativeNotifyNetworkChange(Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;)V

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mListener:Lio/agora/rtc2/internal/CommonUtility$Listener;

    if-eqz v1, :cond_2a

    invoke-interface {v1, v0}, Lio/agora/rtc2/internal/CommonUtility$Listener;->onNetworkChange(Lio/agora/rtc2/internal/CommonUtility$MediaNetworkInfo;)V

    :cond_2a
    :goto_2a
    return-void
.end method

.method onPowerChange(I)V
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "batteryPercentage"
        }
    .end annotation

    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    const-string v1, "onPowerChange() "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    const-string v1, "CommonUtility"

    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    iput p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mBatteryPercentage:I

    return-void
.end method

.method setExtraConnectionActionForTesting(Ljava/lang/String;)V
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "action"
        }
    .end annotation

    iput-object p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mExtraConnectivityFilterActionForTesting:Ljava/lang/String;

    return-void
.end method

.method setListener(Lio/agora/rtc2/internal/CommonUtility$Listener;)V
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "listener"
        }
    .end annotation

    iput-object p1, p0, Lio/agora/rtc2/internal/CommonUtility;->mListener:Lio/agora/rtc2/internal/CommonUtility$Listener;

    return-void
.end method

.method public setupGravityMonitor()I
    .registers 6

    const-string v0, "CommonUtility"

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/content/Context;

    const/4 v2, -0x1

    if-nez v1, :cond_e

    return v2

    :cond_e
    :try_start_e
    iget-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationListener:Landroid/view/OrientationEventListener;

    if-nez v3, :cond_1a

    new-instance v3, Lio/agora/rtc2/internal/CommonUtility$5;

    const/4 v4, 0x2

    invoke-direct {v3, p0, v1, v4}, Lio/agora/rtc2/internal/CommonUtility$5;-><init>(Lio/agora/rtc2/internal/CommonUtility;Landroid/content/Context;I)V

    iput-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationListener:Landroid/view/OrientationEventListener;

    :cond_1a
    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mOrientationListener:Landroid/view/OrientationEventListener;

    invoke-virtual {v1}, Landroid/view/OrientationEventListener;->enable()V

    const-string v1, "[setupGravityMonitor] done!"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_24
    .catch Ljava/lang/Exception; {:try_start_e .. :try_end_24} :catch_25

    goto :goto_2b

    :catch_25
    move-exception v1

    const-string v3, "Unable to create OrientationEventListener, "

    invoke-static {v0, v3, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_2b
    return v2
.end method

.method startMonitor()V
    .registers 6

    const-string v0, "CommonUtility"

    const-string v1, "startMonitor()"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V

    sget-boolean v1, Lio/agora/rtc2/internal/CommonUtility;->ignoreMonitor:Z

    if-eqz v1, :cond_11

    const-string v1, "ignoreMonitor in simulator, just for ut"

    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V

    return-void

    :cond_11
    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->mContext:Ljava/lang/ref/WeakReference;

    invoke-virtual {v1}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/content/Context;

    if-nez v1, :cond_1c

    return-void

    :cond_1c
    :try_start_1c
    new-instance v2, Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

    iget-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    invoke-direct {v2, p0, v3}, Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;-><init>(Lio/agora/rtc2/internal/CommonUtility;Landroid/os/Handler;)V

    iput-object v2, p0, Lio/agora/rtc2/internal/CommonUtility;->mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

    const-string v2, "phone"

    invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Landroid/telephony/TelephonyManager;

    iget-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mPhoneStateListener:Lio/agora/rtc2/internal/CommonUtility$AgoraPhoneStateListener;

    const/16 v4, 0x120

    invoke-virtual {v2, v3, v4}, Landroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V
    :try_end_34
    .catch Ljava/lang/Exception; {:try_start_1c .. :try_end_34} :catch_35

    goto :goto_3b

    :catch_35
    move-exception v2

    const-string v3, "Unable to create PhoneStateListener, "

    invoke-static {v0, v3, v2}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_3b
    :try_start_3b
    new-instance v2, Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;

    invoke-direct {v2, p0}, Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;-><init>(Lio/agora/rtc2/internal/CommonUtility;)V

    iput-object v2, p0, Lio/agora/rtc2/internal/CommonUtility;->mConnectionBroadcastReceiver:Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;

    new-instance v3, Landroid/content/IntentFilter;

    const-string v4, "android.net.conn.CONNECTIVITY_CHANGE"

    invoke-direct {v3, v4}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, v2, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

    iget-object v2, p0, Lio/agora/rtc2/internal/CommonUtility;->mExtraConnectivityFilterActionForTesting:Ljava/lang/String;

    invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v2

    if-nez v2, :cond_67

    iget-object v2, p0, Lio/agora/rtc2/internal/CommonUtility;->mConnectionBroadcastReceiver:Lio/agora/rtc2/internal/ConnectionChangeBroadcastReceiver;

    new-instance v3, Landroid/content/IntentFilter;

    iget-object v4, p0, Lio/agora/rtc2/internal/CommonUtility;->mExtraConnectivityFilterActionForTesting:Ljava/lang/String;

    invoke-direct {v3, v4}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1, v2, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
    :try_end_60
    .catch Ljava/lang/Exception; {:try_start_3b .. :try_end_60} :catch_61

    goto :goto_67

    :catch_61
    move-exception v2

    const-string v3, "Unable to create ConnectionChangeBroadcastReceiver, "

    invoke-static {v0, v3, v2}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :cond_67
    :goto_67
    :try_start_67
    new-instance v2, Lio/agora/rtc2/internal/PowerChangeReceiver;

    invoke-direct {v2, p0}, Lio/agora/rtc2/internal/PowerChangeReceiver;-><init>(Lio/agora/rtc2/internal/CommonUtility;)V

    iput-object v2, p0, Lio/agora/rtc2/internal/CommonUtility;->mPowerChangeReceiver:Lio/agora/rtc2/internal/PowerChangeReceiver;

    new-instance v2, Landroid/content/IntentFilter;

    invoke-direct {v2}, Landroid/content/IntentFilter;-><init>()V

    const-string v3, "android.intent.action.BATTERY_CHANGED"

    invoke-virtual {v2, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

    iget-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mPowerChangeReceiver:Lio/agora/rtc2/internal/PowerChangeReceiver;

    invoke-virtual {v1, v3, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
    :try_end_7d
    .catch Ljava/lang/Exception; {:try_start_67 .. :try_end_7d} :catch_7e

    goto :goto_84

    :catch_7e
    move-exception v2

    const-string v3, "Unable to create PowerChangeReceiver, "

    invoke-static {v0, v3, v2}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_84
    :try_start_84
    new-instance v2, Lio/agora/rtc2/internal/ProcessLifecycleOwner;

    invoke-static {}, Lio/agora/rtc2/internal/CommonUtility;->isAppInForeground()Z

    move-result v3

    invoke-direct {v2, v3, p0}, Lio/agora/rtc2/internal/ProcessLifecycleOwner;-><init>(ZLio/agora/rtc2/internal/CommonUtility;)V

    iput-object v2, p0, Lio/agora/rtc2/internal/CommonUtility;->mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;

    invoke-virtual {v1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object v2

    check-cast v2, Landroid/app/Application;

    iget-object v3, p0, Lio/agora/rtc2/internal/CommonUtility;->mProcessLifecycleOwner:Lio/agora/rtc2/internal/ProcessLifecycleOwner;

    invoke-virtual {v2, v3}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
    :try_end_9a
    .catch Ljava/lang/Exception; {:try_start_84 .. :try_end_9a} :catch_9b

    goto :goto_a1

    :catch_9b
    move-exception v2

    const-string v3, "Unable to registerActivityLifecycleCallbacks, "

    invoke-static {v0, v3, v2}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_a1
    const/4 v2, 0x1

    :try_start_a2
    invoke-direct {p0, v1, v2}, Lio/agora/rtc2/internal/CommonUtility;->monitorOrientationChange(Landroid/content/Context;Z)V
    :try_end_a5
    .catch Ljava/lang/Exception; {:try_start_a2 .. :try_end_a5} :catch_a6

    goto :goto_ac

    :catch_a6
    move-exception v1

    const-string v2, "Unable to monitorOrientationChange, "

    invoke-static {v0, v2, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    :goto_ac
    return-void
.end method

.method public updateOrientationManual()V
    .registers 5

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    if-eqz v0, :cond_1d

    iget-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mDisposed:Z

    if-nez v0, :cond_1d

    iget-wide v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mNativeHandle:J

    const-wide/16 v2, 0x0

    cmp-long v0, v0, v2

    if-nez v0, :cond_11

    goto :goto_1d

    :cond_11
    const/4 v0, 0x1

    iput-boolean v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mUpdateRotationTrigger:Z

    iget-object v0, p0, Lio/agora/rtc2/internal/CommonUtility;->mHandler:Landroid/os/Handler;

    iget-object v1, p0, Lio/agora/rtc2/internal/CommonUtility;->rotationRunnable:Ljava/lang/Runnable;

    const-wide/16 v2, 0xc8

    invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z

    :cond_1d
    :goto_1d
    return-void
.end method