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