AudioRoutingController.smali 
.class public Lio/agora/rtc2/internal/AudioRoutingController;
.super Ljava/lang/Object;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;,
        Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallbackImpl;,
        Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;,
        Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;,
        Lio/agora/rtc2/internal/AudioRoutingController$ControllerAudioDeviceChangeCallback;,
        Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;,
        Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;,
        Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;,
        Lio/agora/rtc2/internal/AudioRoutingController$ControllerBaseState;,
        Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;,
        Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;,
        Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;,
        Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    }
.end annotation
# static fields
.field public static final AUDIO_DEVICE_EVENT_FALLBACK_TO_A2DP:I = 0x4
.field private static final BLUETOOTH_SCO_TIMEOUT_MS:I = 0xbb8
.field private static final BT_SCO_STATE_CONNECTED:I = 0x1
.field private static final BT_SCO_STATE_CONNECTING:I = 0x0
.field private static final BT_SCO_STATE_DISCONNECTED:I = 0x3
.field private static final BT_SCO_STATE_DISCONNECTING:I = 0x2
.field public static final CMD_FORCE_TO_A2DP:I = 0x10
.field public static final CMD_FORCE_TO_SPEAKER:I = 0xb
.field public static final CMD_MUTE_VIDEO_ALL:I = 0xe
.field public static final CMD_MUTE_VIDEO_LOCAL:I = 0xc
.field public static final CMD_MUTE_VIDEO_REMOTES:I = 0xd
.field public static final CMD_SET_DEFAULT_ROUTING:I = 0xa
.field private static final CMD_SET_PREFER_ROUTING:I = 0x19
.field public static final CMD_START_BT_SCO:I = 0xf
.field public static final DEVICE_EVT_BT_OFF:I = 0x0
.field public static final DEVICE_EVT_BT_RECONNECT:I = 0x1
.field public static final DEVICE_OUTPUT_OUT_IP:I = 0x800000
.field public static final DEVICE_OUT_AUX_DIGITAL:I = 0x400
.field public static final DEVICE_OUT_BLUETOOTH_A2DP:I = 0x80
.field public static final DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES:I = 0x100
.field public static final DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER:I = 0x200
.field public static final DEVICE_OUT_EARPIECE:I = 0x1
.field public static final DEVICE_OUT_SPEAKER:I = 0x2
.field public static final DEVICE_OUT_USB_DEVICE:I = 0x4000
.field public static final DEVICE_OUT_USB_HEADSET:I = 0x4000000
.field public static final DEVICE_OUT_WIRED_HEADPHONE:I = 0x8
.field public static final DEVICE_OUT_WIRED_HEADSET:I = 0x4
.field private static final ERROR:I = 0x4
.field private static final EVT_BT_HEADSET:I = 0x2
.field private static final EVT_BT_HEADSET_RECONNECT:I = 0x17
.field private static final EVT_BT_SCO:I = 0x3
.field public static final EVT_CHANNEL_PROFILE:I = 0x14
.field public static final EVT_ENGINE_ROLE_CHANGED:I = 0x15
.field private static final EVT_HDMI:I = 0x6
.field private static final EVT_HEADSET:I = 0x1
.field public static final EVT_PHONE_STATE_CHANGED:I = 0x16
.field private static final EVT_USB:I = 0x4
.field private static final EVT_USB_HEADSET:I = 0x5
.field private static final MAX_SCO_CONNECT_ATTEMPS:I = 0x2
.field public static final OFF:I = 0x0
.field public static final ON:I = 0x1
.field private static final ROUTE_TYPE_TO_EVT:Landroid/util/SparseIntArray;
.field public static final SDK_INT_FOR_DEVICE_INVENTORY:I = 0x1f
.field private static final START:I = 0x1
.field private static final STOP:I = 0x2
.field private static final TAG:Ljava/lang/String; = "AudioRoute"
.field private static final UNINIT:I = 0x0
.field public static final UNSET:I = -0x1
.field private static deviceSpecialMonitor:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
.field private static mockBlueToothEnable:Z
.field private static mockedAudioManager:Landroid/media/AudioManager;
.field private static mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;
# instance fields
.field private ROUTING_ATTR_SPEAKER_SWITCH_SUPPORT:I
.field private final bluetoothTimeoutRunnable:Ljava/lang/Runnable;
.field private ctrlAudioDeviceCb:Lio/agora/rtc2/internal/AudioRoutingController$ControllerAudioDeviceChangeCallback;
.field private dynamic_timeout:I
.field private mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
.field private mBtScoState:I
.field private mChannelProfile:I
.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 mCurrentRouting:I
.field private mDefaultRouting:I
.field private mDefaultSystemRouting:I
.field private mDisposed:Z
.field private mEngineRole:I
.field private mErrorState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;
.field private mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
.field private mForceUseA2dp:Z
.field private mForcedRouting:I
.field private mHeadsetType:I
.field private mIsBTHeadsetPlugged:Z
.field private mIsBTScoStarted:Z
.field private mIsWiredHeadsetPlugged:Z
.field private mMuteLocal:Z
.field private mMuteRemotes:Z
.field private mNativeHandle:J
.field private mPhoneInCall:Z
.field private mScoConnectionAttemps:I
.field mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
.field private mSpeakerCommVolume:I
.field private mStartState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;
.field private mState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
.field private mStopState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;
.field private final mThreadChecker:Lio/agora/base/internal/ThreadUtils$ThreadChecker;
.field private mVersionInUsed:I
.field private mVideoDisabled:Z
# direct methods
.method static constructor <clinit>()V
    .registers 3
    new-instance v0, Landroid/util/SparseIntArray;
    invoke-direct {v0}, Landroid/util/SparseIntArray;-><init>()V
    sput-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->ROUTE_TYPE_TO_EVT:Landroid/util/SparseIntArray;
    const/4 v1, 0x0
    const/4 v2, 0x1
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseIntArray;->put(II)V
    const/4 v1, 0x2
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseIntArray;->put(II)V
    const/4 v2, 0x5
    invoke-virtual {v0, v2, v1}, Landroid/util/SparseIntArray;->put(II)V
    const/4 v1, 0x6
    const/4 v2, 0x4
    invoke-virtual {v0, v1, v2}, Landroid/util/SparseIntArray;->put(II)V
    const/4 v2, 0x7
    invoke-virtual {v0, v2, v1}, Landroid/util/SparseIntArray;->put(II)V
    return-void
.end method
.method public constructor <init>(Landroid/content/Context;J)V
    .registers 8
    .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-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    const/4 v1, -0x1
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    iput-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    const/4 v2, 0x1
    iput v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->ROUTING_ATTR_SPEAKER_SWITCH_SUPPORT:I
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    const/4 v3, 0x3
    iput v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultRouting:I
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mForcedRouting:I
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultSystemRouting:I
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mChannelProfile:I
    iput-boolean v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVideoDisabled:Z
    iput-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mMuteLocal:Z
    iput-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mMuteRemotes:Z
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEngineRole:I
    iput-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mPhoneInCall:Z
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mSpeakerCommVolume:I
    iput-boolean v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mForceUseA2dp:Z
    iput v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    iput-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    const/16 v1, 0xbb8
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->dynamic_timeout:I
    const/4 v1, 0x0
    iput-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStopState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;
    iput-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStartState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;
    iput-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mErrorState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;
    new-instance v3, Lio/agora/rtc2/internal/AudioRoutingController$1;
    invoke-direct {v3, p0}, Lio/agora/rtc2/internal/AudioRoutingController$1;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;)V
    iput-object v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->bluetoothTimeoutRunnable:Ljava/lang/Runnable;
    iput-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->ctrlAudioDeviceCb:Lio/agora/rtc2/internal/AudioRoutingController$ControllerAudioDeviceChangeCallback;
    iput-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDisposed:Z
    iput-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    new-instance v1, Ljava/lang/ref/WeakReference;
    invoke-direct {v1, p1}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V
    iput-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mContext:Ljava/lang/ref/WeakReference;
    iput-wide p2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->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/AudioRoutingController;->mThreadChecker:Lio/agora/base/internal/ThreadUtils$ThreadChecker;
    sget p1, Landroid/os/Build$VERSION;->SDK_INT:I
    const/16 p2, 0x1f
    if-lt p1, p2, :cond_5c
    iput v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVersionInUsed:I
    goto :goto_5e
    :cond_5c
    iput v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVersionInUsed:I
    :goto_5e
    return-void
.end method
.method static synthetic access$000(Lio/agora/rtc2/internal/AudioRoutingController;)V
    .registers 1
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->bluetoothTimeout()V
    return-void
.end method
.method static synthetic access$100(Lio/agora/rtc2/internal/AudioRoutingController;)Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    .registers 1
    iget-object p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    return-object p0
.end method
.method static synthetic access$1000(Lio/agora/rtc2/internal/AudioRoutingController;)I
    .registers 1
    iget p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mChannelProfile:I
    return p0
.end method
.method static synthetic access$1002(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mChannelProfile:I
    return p1
.end method
.method static synthetic access$102(Lio/agora/rtc2/internal/AudioRoutingController;Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;)Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    .registers 2
    iput-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    return-object p1
.end method
.method static synthetic access$1100(Lio/agora/rtc2/internal/AudioRoutingController;)Z
    .registers 1
    iget-boolean p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    return p0
.end method
.method static synthetic access$1102(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    return p1
.end method
.method static synthetic access$1200()Z
    .registers 1
    sget-boolean v0, Lio/agora/rtc2/internal/AudioRoutingController;->mockBlueToothEnable:Z
    return v0
.end method
.method static synthetic access$1300(Lio/agora/rtc2/internal/AudioRoutingController;)Z
    .registers 1
    iget-boolean p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mForceUseA2dp:Z
    return p0
.end method
.method static synthetic access$1302(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mForceUseA2dp:Z
    return p1
.end method
.method static synthetic access$1400(Lio/agora/rtc2/internal/AudioRoutingController;)I
    .registers 1
    iget p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    return p0
.end method
.method static synthetic access$1402(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    return p1
.end method
.method static synthetic access$1500(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->updateBluetoothSco(I)I
    move-result p0
    return p0
.end method
.method static synthetic access$1602(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVideoDisabled:Z
    return p1
.end method
.method static synthetic access$1702(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mMuteLocal:Z
    return p1
.end method
.method static synthetic access$1802(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mMuteRemotes:Z
    return p1
.end method
.method static synthetic access$1902(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEngineRole:I
    return p1
.end method
.method static synthetic access$2000(Lio/agora/rtc2/internal/AudioRoutingController;)I
    .registers 1
    iget p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultRouting:I
    return p0
.end method
.method static synthetic access$2002(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultRouting:I
    return p1
.end method
.method static synthetic access$2100(Lio/agora/rtc2/internal/AudioRoutingController;I)Ljava/lang/String;
    .registers 2
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method
.method static synthetic access$2200(Lio/agora/rtc2/internal/AudioRoutingController;)Z
    .registers 1
    iget-boolean p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mPhoneInCall:Z
    return p0
.end method
.method static synthetic access$2202(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mPhoneInCall:Z
    return p1
.end method
.method static synthetic access$2400(Lio/agora/rtc2/internal/AudioRoutingController;)V
    .registers 1
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->cancelTimer()V
    return-void
.end method
.method static synthetic access$2500(Lio/agora/rtc2/internal/AudioRoutingController;)Landroid/media/AudioManager;
    .registers 1
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object p0
    return-object p0
.end method
.method static synthetic access$2600(Lio/agora/rtc2/internal/AudioRoutingController;)Z
    .registers 1
    iget-boolean p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    return p0
.end method
.method static synthetic access$2602(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    return p1
.end method
.method static synthetic access$2700(Lio/agora/rtc2/internal/AudioRoutingController;)V
    .registers 1
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->stopBtSco()V
    return-void
.end method
.method static synthetic access$2800(Lio/agora/rtc2/internal/AudioRoutingController;I)Ljava/lang/String;
    .registers 2
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->evtAsString(I)Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method
.method static synthetic access$2902(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mForcedRouting:I
    return p1
.end method
.method static synthetic access$300(Lio/agora/rtc2/internal/AudioRoutingController;I)Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    .registers 2
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->changeState(I)Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    move-result-object p0
    return-object p0
.end method
.method static synthetic access$3000(Lio/agora/rtc2/internal/AudioRoutingController;)I
    .registers 1
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getCurrSystemRouting()I
    move-result p0
    return p0
.end method
.method static synthetic access$3100(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->doSetAudioOutputRouting(I)I
    move-result p0
    return p0
.end method
.method static synthetic access$3202(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    return p1
.end method
.method static synthetic access$3302(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    return p1
.end method
.method static synthetic access$3400(Lio/agora/rtc2/internal/AudioRoutingController;I)V
    .registers 2
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->selectRoutingForCommunication(I)V
    return-void
.end method
.method static synthetic access$3500()Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    .registers 1
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->deviceSpecialMonitor:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    return-object v0
.end method
.method static synthetic access$3600(Lio/agora/rtc2/internal/AudioRoutingController;Ljava/lang/String;Ljava/lang/String;II)V
    .registers 5
    invoke-direct {p0, p1, p2, p3, p4}, Lio/agora/rtc2/internal/AudioRoutingController;->nativeAudioDeviceStateChanged(Ljava/lang/String;Ljava/lang/String;II)V
    return-void
.end method
.method static synthetic access$3700()Landroid/util/SparseIntArray;
    .registers 1
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->ROUTE_TYPE_TO_EVT:Landroid/util/SparseIntArray;
    return-object v0
.end method
.method static synthetic access$400(Lio/agora/rtc2/internal/AudioRoutingController;)V
    .registers 1
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->resetAudioRouting()V
    return-void
.end method
.method static synthetic access$502(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    return p1
.end method
.method static synthetic access$600(Lio/agora/rtc2/internal/AudioRoutingController;)Z
    .registers 1
    iget-boolean p0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    return p0
.end method
.method static synthetic access$602(Lio/agora/rtc2/internal/AudioRoutingController;Z)Z
    .registers 2
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    return p1
.end method
.method static synthetic access$700()Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;
    .registers 1
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;
    return-object v0
.end method
.method static synthetic access$802(Lio/agora/rtc2/internal/AudioRoutingController;I)I
    .registers 2
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultSystemRouting:I
    return p1
.end method
.method static synthetic access$900(Lio/agora/rtc2/internal/AudioRoutingController;I)V
    .registers 2
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->notifyAudioRoutingChanged(I)V
    return-void
.end method
.method private bluetoothTimeout()V
    .registers 6
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v0
    if-eqz v0, :cond_b
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v1
    goto :goto_c
    :cond_b
    const/4 v1, 0x0
    :goto_c
    iget v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    const/4 v3, 0x2
    const-string v4, "AudioRoute"
    if-ge v2, v3, :cond_76
    new-instance v2, Ljava/lang/StringBuilder;
    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    const-string v3, "attemps trying, bt sco started: "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget-boolean v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    const-string v3, " sco connected: "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    const-string v3, " "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v3, " times "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v3, "["
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-direct {p0, v3}, Lio/agora/rtc2/internal/AudioRoutingController;->btStateAsString(I)Ljava/lang/String;
    move-result-object v3
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v3, "]"
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v2
    invoke-static {v4, v2}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V
    if-nez v1, :cond_6d
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->startTimer()V
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    add-int/lit8 v1, v1, 0x1
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->stopBtSco()V
    invoke-virtual {v0}, Landroid/media/AudioManager;->stopBluetoothSco()V
    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/AudioRoutingController;->doStartBTSco(Landroid/media/AudioManager;)V
    goto :goto_99
    :cond_6d
    const-string v0, "soc connected"
    invoke-static {v4, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->cancelTimer()V
    goto :goto_99
    :cond_76
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "start bluetooth sco timeout, actual routing: "
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->queryCurrentAudioRouting()I
    move-result v1
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v0
    invoke-static {v4, v0}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->cancelTimer()V
    const/16 v0, 0x406
    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/AudioRoutingController;->nativeAudioRoutingError(I)V
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->checkFallbackA2dpIfNeed()V
    :goto_99
    return-void
.end method
.method private btStateAsString(I)Ljava/lang/String;
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "state"
        }
    .end annotation
    if-eqz p1, :cond_26
    const/4 v0, 0x1
    if-eq p1, v0, :cond_23
    const/4 v0, 0x2
    if-eq p1, v0, :cond_20
    const/4 v0, 0x3
    if-eq p1, v0, :cond_1d
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "Unknown "
    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 p1
    goto :goto_28
    :cond_1d
    const-string p1, "SCO_DISCONNECTED"
    goto :goto_28
    :cond_20
    const-string p1, "SCO_DISCONNECTING"
    goto :goto_28
    :cond_23
    const-string p1, "SCO_CONNECTED"
    goto :goto_28
    :cond_26
    const-string p1, "SCO_CONNECTING"
    :goto_28
    return-object p1
.end method
.method private cancelTimer()V
    .registers 3
    const/4 v0, 0x0
    iput v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    const-string v0, "AudioRoute"
    const-string v1, "cancel bluetooth timer"
    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/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->bluetoothTimeoutRunnable:Ljava/lang/Runnable;
    invoke-virtual {v0, v1}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;->removeCallbacks(Ljava/lang/Runnable;)V
    return-void
.end method
.method private changeState(I)Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "state"
        }
    .end annotation
    const/4 v0, 0x2
    if-ne p1, v0, :cond_15
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStopState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;
    if-nez p1, :cond_f
    new-instance p1, Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;
    invoke-direct {p1, p0}, Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;)V
    iput-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStopState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;
    goto :goto_12
    :cond_f
    invoke-virtual {p1}, Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;->reset()V
    :goto_12
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStopState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStopState;
    return-object p1
    :cond_15
    const/4 v0, 0x1
    if-ne p1, v0, :cond_2a
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStartState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;
    if-nez p1, :cond_24
    new-instance p1, Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;
    invoke-direct {p1, p0}, Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;)V
    iput-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStartState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;
    goto :goto_27
    :cond_24
    invoke-virtual {p1}, Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;->reset()V
    :goto_27
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mStartState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerStartState;
    return-object p1
    :cond_2a
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mErrorState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;
    if-nez p1, :cond_37
    new-instance p1, Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;
    const/4 v0, 0x0
    invoke-direct {p1, p0, v0}, Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;Lio/agora/rtc2/internal/AudioRoutingController$1;)V
    iput-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mErrorState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;
    goto :goto_3a
    :cond_37
    invoke-virtual {p1}, Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;->reset()V
    :goto_3a
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mErrorState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerErrorState;
    return-object p1
.end method
.method private checkFallbackA2dpIfNeed()V
    .registers 3
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v0
    if-eqz v0, :cond_16
    iget-boolean v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    if-eqz v1, :cond_16
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothA2dpOn()Z
    move-result v0
    if-nez v0, :cond_11
    goto :goto_16
    :cond_11
    const/4 v0, 0x4
    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/AudioRoutingController;->nativeAudioRoutingCallbackEvent(I)V
    return-void
    :cond_16
    :goto_16
    const-string v0, "AudioRoute"
    const-string v1, "could not use a2dp also.."
    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    const/4 v0, 0x0
    iput-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->resetAudioRouting()V
    return-void
.end method
.method private doSetAudioOutputRouting(I)I
    .registers 7
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "routing"
        }
    .end annotation
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "set audio output routing from "
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v1
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v1, " to "
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v1
    invoke-virtual {v0, v1}, 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, "AudioRoute"
    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    const/4 v0, 0x0
    :try_start_29
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v2
    if-eqz v2, :cond_38
    const/4 v3, 0x3
    if-ne p1, v3, :cond_34
    const/4 v3, 0x1
    goto :goto_35
    :cond_34
    move v3, v0
    :goto_35
    invoke-virtual {v2, v3}, Landroid/media/AudioManager;->setSpeakerphoneOn(Z)V
    :cond_38
    invoke-virtual {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->queryCurrentAudioRouting()I
    move-result v2
    if-eq v2, p1, :cond_6f
    invoke-virtual {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->queryCurrentAudioRouting()I
    move-result v2
    new-instance v3, Ljava/lang/StringBuilder;
    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
    const-string v4, "different audio routing from target "
    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v4, ", actual routing: "
    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v4, "["
    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-direct {p0, v2}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v2, "]"
    invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v2
    invoke-static {v1, v2}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    :cond_6f
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->updateBluetoothSco(I)I
    iget v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    if-ne p1, v2, :cond_8b
    new-instance v2, Ljava/lang/StringBuilder;
    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    const-string v3, "audio routing not changed, ignore: "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object p1
    invoke-static {v1, p1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    return v0
    :cond_8b
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->notifyAudioRoutingChanged(I)V
    new-instance p1, Ljava/lang/StringBuilder;
    invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
    const-string v2, "audio routing changed to "
    invoke-virtual {p1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    invoke-direct {p0, v2}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {p1, v2}, 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 {v1, p1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_aa
    .catch Ljava/lang/Exception; {:try_start_29 .. :try_end_aa} :catch_ab
    goto :goto_b1
    :catch_ab
    move-exception p1
    const-string v2, "set audio output routing failed:"
    invoke-static {v1, v2, p1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :goto_b1
    return v0
.end method
.method private doStartBTSco(Landroid/media/AudioManager;)V
    .registers 10
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "am"
        }
    .end annotation
    const-string v0, "]"
    const-string v1, "["
    const-string v2, " "
    const-string v3, "AudioRoute"
    :try_start_8
    invoke-virtual {p1}, Landroid/media/AudioManager;->getMode()I
    move-result v4
    new-instance v5, Ljava/lang/StringBuilder;
    invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
    const-string v6, "doStartBTSco "
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    sget v6, Landroid/os/Build$VERSION;->SDK_INT:I
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v6, " sco on: "
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {p1}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v6
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-direct {p0, v4}, Lio/agora/rtc2/internal/AudioRoutingController;->modeAsString(I)Ljava/lang/String;
    move-result-object v4
    invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v5, v0}, 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-static {v3, v4}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    sget v4, Landroid/os/Build$VERSION;->SDK_INT:I
    const/16 v5, 0x16
    const/4 v6, 0x1
    const/4 v7, 0x0
    if-ge v4, v5, :cond_4d
    invoke-virtual {p1, v7, v6}, Landroid/media/AudioManager;->setStreamMute(IZ)V
    goto :goto_50
    :cond_4d
    invoke-virtual {p1, v7, v6, v7}, Landroid/media/AudioManager;->setStreamVolume(III)V
    :goto_50
    invoke-virtual {p1}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v4
    if-eqz v4, :cond_63
    invoke-virtual {p1}, Landroid/media/AudioManager;->stopBluetoothSco()V
    const-wide/16 v4, 0x258
    invoke-static {v4, v5}, Ljava/lang/Thread;->sleep(J)V
    const-string v4, "doStartBTSco in sco already on, try stop old connect firstly!"
    invoke-static {v3, v4}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    :cond_63
    invoke-virtual {p1}, Landroid/media/AudioManager;->startBluetoothSco()V
    :try_end_66
    .catch Ljava/lang/Exception; {:try_start_8 .. :try_end_66} :catch_67
    goto :goto_6d
    :catch_67
    move-exception v4
    const-string v5, "doStartBTSco fail "
    invoke-static {v3, v5, v4}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :goto_6d
    new-instance v4, Ljava/lang/StringBuilder;
    invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
    const-string v5, "doStartBTSco done sco on: "
    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {p1}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v5
    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {p1}, Landroid/media/AudioManager;->getMode()I
    move-result v2
    invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {p1}, Landroid/media/AudioManager;->getMode()I
    move-result p1
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->modeAsString(I)Ljava/lang/String;
    move-result-object p1
    invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object p1
    invoke-static {v3, p1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    return-void
.end method
.method private doStopBTSco(Landroid/media/AudioManager;)V
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "am"
        }
    .end annotation
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "doStopBTSco "
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v1, " sco on: "
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {p1}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v1
    invoke-virtual {v0, v1}, 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, "AudioRoute"
    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    :try_start_24
    invoke-virtual {p1}, Landroid/media/AudioManager;->stopBluetoothSco()V
    sget p1, Landroid/os/Build$VERSION;->SDK_INT:I
    :try_end_29
    .catch Ljava/lang/Exception; {:try_start_24 .. :try_end_29} :catch_2a
    goto :goto_2e
    :catch_2a
    move-exception p1
    invoke-virtual {p1}, Ljava/lang/Exception;->printStackTrace()V
    :goto_2e
    return-void
.end method
.method private evtAsString(I)Ljava/lang/String;
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "evt"
        }
    .end annotation
    const/4 v0, 0x1
    if-eq p1, v0, :cond_51
    const/4 v0, 0x2
    if-eq p1, v0, :cond_4e
    const/4 v0, 0x3
    if-eq p1, v0, :cond_4b
    const/4 v0, 0x4
    if-eq p1, v0, :cond_48
    const/16 v0, 0xa
    if-eq p1, v0, :cond_45
    const/16 v0, 0xb
    if-eq p1, v0, :cond_42
    const/16 v0, 0xe
    if-eq p1, v0, :cond_3f
    const/16 v0, 0x10
    if-eq p1, v0, :cond_3c
    const/16 v0, 0x14
    if-eq p1, v0, :cond_39
    const/16 v0, 0x16
    if-eq p1, v0, :cond_36
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "evt "
    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 p1
    goto :goto_53
    :cond_36
    const-string p1, "EVT_PHONE_STATE_CHANGED"
    goto :goto_53
    :cond_39
    const-string p1, "EVT_CHANNEL_PROFILE"
    goto :goto_53
    :cond_3c
    const-string p1, "CMD_FORCE_TO_A2DP"
    goto :goto_53
    :cond_3f
    const-string p1, "CMD_MUTE_VIDEO_REMOTES"
    goto :goto_53
    :cond_42
    const-string p1, "CMD_FORCE_TO_SPEAKER"
    goto :goto_53
    :cond_45
    const-string p1, "CMD_SET_DEFAULT_ROUTING"
    goto :goto_53
    :cond_48
    const-string p1, "EVT_USB"
    goto :goto_53
    :cond_4b
    const-string p1, "EVT_BT_SCO"
    goto :goto_53
    :cond_4e
    const-string p1, "EVT_BT_HEADSET"
    goto :goto_53
    :cond_51
    const-string p1, "EVT_HEADSET"
    :goto_53
    return-object p1
.end method
.method private getAudioManager()Landroid/media/AudioManager;
    .registers 3
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->mockedAudioManager:Landroid/media/AudioManager;
    if-eqz v0, :cond_5
    return-object v0
    :cond_5
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->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_11
    const/4 v0, 0x0
    return-object v0
    :cond_11
    const-string v1, "audio"
    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
    move-result-object v0
    check-cast v0, Landroid/media/AudioManager;
    return-object v0
.end method
.method private getAudioRouteDesc(I)Ljava/lang/String;
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "route"
        }
    .end annotation
    packed-switch p1, :pswitch_data_22
    :pswitch_3
    const-string p1, "Unknown"
    return-object p1
    :pswitch_6
    const-string p1, "USB_HEADSET"
    return-object p1
    :pswitch_9
    const-string p1, "USBDevice"
    return-object p1
    :pswitch_c
    const-string p1, "HeadsetBluetooth"
    return-object p1
    :pswitch_f
    const-string p1, "Loudspeaker"
    return-object p1
    :pswitch_12
    const-string p1, "Speakerphone"
    return-object p1
    :pswitch_15
    const-string p1, "HeadsetOnly"
    return-object p1
    :pswitch_18
    const-string p1, "Earpiece"
    return-object p1
    :pswitch_1b
    const-string p1, "Headset"
    return-object p1
    :pswitch_1e
    const-string p1, "Default"
    return-object p1
    nop
    :pswitch_data_22
    .packed-switch -0x1
        :pswitch_1e
        :pswitch_1b
        :pswitch_18
        :pswitch_15
        :pswitch_12
        :pswitch_f
        :pswitch_c
        :pswitch_9
        :pswitch_3
        :pswitch_6
    .end packed-switch
.end method
.method private getCurrSystemRouting()I
    .registers 10
    const-string v0, "AudioRoute"
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v1
    const/4 v2, 0x3
    const/4 v3, 0x0
    :try_start_8
    const-class v4, Landroid/media/AudioManager;
    const-string v5, "getDevicesForStream"
    const/4 v6, 0x1
    new-array v7, v6, [Ljava/lang/Class;
    sget-object v8, Ljava/lang/Integer;->TYPE:Ljava/lang/Class;
    aput-object v8, v7, v3
    invoke-virtual {v4, v5, v7}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
    move-result-object v4
    new-array v5, v6, [Ljava/lang/Object;
    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    move-result-object v6
    aput-object v6, v5, v3
    invoke-virtual {v4, v1, v5}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    move-result-object v1
    check-cast v1, Ljava/lang/Integer;
    invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
    move-result v1
    :try_end_29
    .catch Ljava/lang/Exception; {:try_start_8 .. :try_end_29} :catch_40
    :try_start_29
    new-instance v4, Ljava/lang/StringBuilder;
    invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
    const-string v5, "System playout device: "
    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v4
    invoke-static {v0, v4}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_3d
    .catch Ljava/lang/Exception; {:try_start_29 .. :try_end_3d} :catch_3e
    goto :goto_47
    :catch_3e
    move-exception v4
    goto :goto_42
    :catch_40
    move-exception v4
    move v1, v3
    :goto_42
    const-string v5, "Error while getDevicesForStream! "
    invoke-static {v0, v5, v4}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :goto_47
    const/4 v0, 0x6
    const/4 v4, 0x2
    if-eq v1, v4, :cond_7b
    const/4 v2, 0x4
    if-eq v1, v2, :cond_7a
    const/16 v2, 0x8
    if-eq v1, v2, :cond_78
    const/16 v2, 0x80
    if-eq v1, v2, :cond_76
    const/16 v2, 0x100
    if-eq v1, v2, :cond_76
    const/16 v2, 0x200
    if-eq v1, v2, :cond_76
    const/16 v2, 0x400
    if-eq v1, v2, :cond_74
    const/16 v2, 0x4000
    if-eq v1, v2, :cond_72
    const/high16 v2, 0x4000000
    if-eq v1, v2, :cond_72
    const/high16 v2, 0x800000
    and-int/2addr v1, v2
    if-eqz v1, :cond_70
    goto :goto_72
    :cond_70
    const/4 v2, -0x1
    goto :goto_7b
    :cond_72
    :goto_72
    move v2, v0
    goto :goto_7b
    :cond_74
    const/4 v2, 0x7
    goto :goto_7b
    :cond_76
    const/4 v2, 0x5
    goto :goto_7b
    :cond_78
    move v2, v4
    goto :goto_7b
    :cond_7a
    move v2, v3
    :cond_7b
    :goto_7b
    return v2
.end method
.method private isAudioOnly()Z
    .registers 2
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVideoDisabled:Z
    if-nez v0, :cond_f
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mMuteLocal:Z
    if-eqz v0, :cond_d
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mMuteRemotes:Z
    if-eqz v0, :cond_d
    goto :goto_f
    :cond_d
    const/4 v0, 0x0
    goto :goto_10
    :cond_f
    :goto_f
    const/4 v0, 0x1
    :goto_10
    return v0
.end method
.method private modeAsString(I)Ljava/lang/String;
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "mode"
        }
    .end annotation
    if-eqz p1, :cond_26
    const/4 v0, 0x1
    if-eq p1, v0, :cond_23
    const/4 v0, 0x2
    if-eq p1, v0, :cond_20
    const/4 v0, 0x3
    if-eq p1, v0, :cond_1d
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "Unknown "
    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 p1
    goto :goto_28
    :cond_1d
    const-string p1, "MODE_IN_COMMUNICATION"
    goto :goto_28
    :cond_20
    const-string p1, "MODE_IN_CALL"
    goto :goto_28
    :cond_23
    const-string p1, "MODE_RINGTONE"
    goto :goto_28
    :cond_26
    const-string p1, "MODE_NORMAL"
    :goto_28
    return-object p1
.end method
.method private native nativeAudioDeviceStateChanged(Ljava/lang/String;Ljava/lang/String;II)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0,
            0x0,
            0x0
        }
        names = {
            "devId",
            "devName",
            "devType",
            "devState"
        }
    .end annotation
.end method
.method private native nativeAudioRoutingCallbackEvent(I)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "cbEvt"
        }
    .end annotation
.end method
.method private native nativeAudioRoutingChanged(I)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "routing"
        }
    .end annotation
.end method
.method private native nativeAudioRoutingError(I)V
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "errCode"
        }
    .end annotation
.end method
.method private notifyAudioRoutingChanged(I)V
    .registers 4
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x10
        }
        names = {
            "routing"
        }
    .end annotation
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "Enter notifyAudioRoutingChanged: "
    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, "AudioRoute"
    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDisposed:Z
    if-eqz v0, :cond_20
    const-string p1, "notifyAudioRoutingChanged returned cause of disposed"
    invoke-static {v1, p1}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V
    return-void
    :cond_20
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->nativeAudioRoutingChanged(I)V
    return-void
.end method
.method private resetAudioRouting()V
    .registers 4
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    const/4 v1, 0x6
    if-eqz v0, :cond_c
    iget-boolean v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    if-eqz v2, :cond_c
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultSystemRouting:I
    goto :goto_44
    :cond_c
    if-eqz v0, :cond_10
    const/4 v1, 0x5
    goto :goto_44
    :cond_10
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    if-eqz v0, :cond_17
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    goto :goto_44
    :cond_17
    iget v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mForcedRouting:I
    const/4 v2, -0x1
    if-eq v0, v2, :cond_1e
    :cond_1c
    :goto_1c
    move v1, v0
    goto :goto_44
    :cond_1e
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->deviceSpecialMonitor:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    if-eqz v0, :cond_2f
    invoke-interface {v0}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;->GetUSBRouteType()I
    move-result v0
    if-eq v0, v2, :cond_2f
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->deviceSpecialMonitor:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    invoke-interface {v0}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;->GetUSBRouteType()I
    move-result v1
    goto :goto_44
    :cond_2f
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    invoke-interface {v0, v1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->isDeviceAvaliable(I)Z
    move-result v0
    if-eqz v0, :cond_38
    goto :goto_44
    :cond_38
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getCurrSystemRouting()I
    move-result v0
    const/4 v2, 0x7
    if-eq v0, v2, :cond_1c
    if-ne v0, v1, :cond_42
    goto :goto_1c
    :cond_42
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultRouting:I
    :goto_44
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v2, "reset audio routing, default routing: "
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultRouting:I
    invoke-direct {p0, v2}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v2, ", current routing: "
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    invoke-direct {p0, v2}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v2, ", target routing: "
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v2, ", actual system routing: "
    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->queryCurrentAudioRouting()I
    move-result v2
    invoke-direct {p0, v2}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v2
    invoke-virtual {v0, v2}, 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 v2, "AudioRoute"
    invoke-static {v2, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    iget v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    if-ne v0, v1, :cond_96
    invoke-virtual {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->queryCurrentAudioRouting()I
    move-result v0
    iget v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    if-eq v0, v2, :cond_99
    :cond_96
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->doSetAudioOutputRouting(I)I
    :cond_99
    return-void
.end method
.method private selectRoutingForCommunication(I)V
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "route"
        }
    .end annotation
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v0
    if-eqz v0, :cond_4f
    invoke-virtual {v0}, Landroid/media/AudioManager;->getMode()I
    move-result v1
    const/4 v2, 0x3
    if-eq v1, v2, :cond_e
    goto :goto_4f
    :cond_e
    const/4 v1, 0x1
    if-ne p1, v1, :cond_18
    invoke-virtual {v0}, Landroid/media/AudioManager;->isWiredHeadsetOn()Z
    move-result v0
    if-eqz v0, :cond_18
    return-void
    :cond_18
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, " try select prefere communication route: "
    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, "AudioRoute"
    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    if-eqz p1, :cond_3e
    const/4 v0, 0x2
    if-eq p1, v0, :cond_3e
    const/16 v0, 0x8
    if-eq p1, v0, :cond_3e
    const/4 v0, 0x5
    if-eq p1, v0, :cond_3e
    const/4 v0, 0x6
    if-eq p1, v0, :cond_3e
    goto :goto_4c
    :cond_3e
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    invoke-interface {v0, p1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->isDeviceAvaliable(I)Z
    move-result v0
    if-nez v0, :cond_4c
    const-string p1, " prefere communication targe route is not connected"
    invoke-static {v1, p1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    return-void
    :cond_4c
    :goto_4c
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->doSetAudioOutputRouting(I)I
    :cond_4f
    :goto_4f
    return-void
.end method
.method public static setAudioDeviceChangedSpecialMonitor(Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;)V
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "specialMonitor"
        }
    .end annotation
    const-string v0, "AudioRoute"
    const-string v1, "setAudioDeviceChangedSpecialMonitor"
    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    sput-object p0, Lio/agora/rtc2/internal/AudioRoutingController;->deviceSpecialMonitor:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    return-void
.end method
.method public static setMockBlueToothEnable(Z)V
    .registers 1
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "mockBlueToothEnable"
        }
    .end annotation
    sput-boolean p0, Lio/agora/rtc2/internal/AudioRoutingController;->mockBlueToothEnable:Z
    return-void
.end method
.method public static setMockedAudioManager(Landroid/media/AudioManager;)V
    .registers 1
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "mockedAudioManager"
        }
    .end annotation
    sput-object p0, Lio/agora/rtc2/internal/AudioRoutingController;->mockedAudioManager:Landroid/media/AudioManager;
    return-void
.end method
.method public static setMockedBroadcaster(Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;)V
    .registers 1
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "mockedBroadcaster"
        }
    .end annotation
    sput-object p0, Lio/agora/rtc2/internal/AudioRoutingController;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;
    invoke-static {p0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->setMockedBroadcaster(Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;)V
    return-void
.end method
.method private setupHotPlugDeviceInitValue()V
    .registers 4
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    const/4 v1, 0x6
    const/4 v2, -0x1
    if-eqz v0, :cond_8
    const/4 v1, 0x5
    goto :goto_19
    :cond_8
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    if-eqz v0, :cond_f
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    goto :goto_19
    :cond_f
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    invoke-interface {v0, v1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->isDeviceAvaliable(I)Z
    move-result v0
    if-eqz v0, :cond_18
    goto :goto_19
    :cond_18
    move v1, v2
    :goto_19
    if-eq v1, v2, :cond_1e
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->notifyAudioRoutingChanged(I)V
    :cond_1e
    return-void
.end method
.method private startBtSco()V
    .registers 5
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v0
    if-eqz v0, :cond_76
    invoke-virtual {v0}, Landroid/media/AudioManager;->getMode()I
    move-result v1
    new-instance v2, Ljava/lang/StringBuilder;
    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    const-string v3, "try to opening bt sco "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v3, " "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v3, "["
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->modeAsString(I)Ljava/lang/String;
    move-result-object v1
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v1, "] "
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->btStateAsString(I)Ljava/lang/String;
    move-result-object v1
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v1, "] sco on: "
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v1
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v1
    const-string v2, "AudioRoute"
    invoke-static {v2, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    new-instance v1, Ljava/lang/StringBuilder;
    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
    const-string v3, "Off call sco support = "
    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothScoAvailableOffCall()Z
    move-result v3
    invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v1
    invoke-static {v2, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    const/4 v1, 0x0
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/AudioRoutingController;->doStartBTSco(Landroid/media/AudioManager;)V
    :cond_76
    return-void
.end method
.method private startTimer()V
    .registers 5
    iget v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->dynamic_timeout:I
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoConnectionAttemps:I
    mul-int/lit16 v1, v1, 0xbb8
    add-int/2addr v0, v1
    iput v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->dynamic_timeout:I
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "start bluetooth timer "
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->dynamic_timeout:I
    invoke-virtual {v0, v1}, 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, "AudioRoute"
    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->bluetoothTimeoutRunnable:Ljava/lang/Runnable;
    const-wide/16 v2, 0xbb8
    invoke-virtual {v0, v1, v2, v3}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;->postDelayed(Ljava/lang/Runnable;J)Z
    return-void
.end method
.method private stopBtSco()V
    .registers 5
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v0
    if-eqz v0, :cond_5c
    invoke-virtual {v0}, Landroid/media/AudioManager;->getMode()I
    move-result v1
    new-instance v2, Ljava/lang/StringBuilder;
    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    const-string v3, "try to stopping bt sco "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v3, "["
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->modeAsString(I)Ljava/lang/String;
    move-result-object v1
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v1, "] "
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-direct {p0, v1}, Lio/agora/rtc2/internal/AudioRoutingController;->btStateAsString(I)Ljava/lang/String;
    move-result-object v1
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v1, "] sco on: "
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v1
    invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v1
    const-string v2, "AudioRoute"
    invoke-static {v2, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v1
    if-nez v1, :cond_56
    const/4 v1, 0x3
    goto :goto_57
    :cond_56
    const/4 v1, 0x2
    :goto_57
    iput v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/AudioRoutingController;->doStopBTSco(Landroid/media/AudioManager;)V
    :cond_5c
    return-void
.end method
.method private updateBluetoothSco(I)I
    .registers 7
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "targetRouting"
        }
    .end annotation
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mPhoneInCall:Z
    const/4 v1, 0x0
    const-string v2, "AudioRoute"
    if-eqz v0, :cond_d
    const-string p1, "not process updateBluetoothSco in call"
    invoke-static {v2, p1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    return v1
    :cond_d
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v3, "updateBluetoothSco sco started: "
    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget-boolean v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    const-string v3, ", audio route target: "
    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    const-string v3, "["
    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v4
    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v4, "] current: "
    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    invoke-direct {p0, v3}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioRouteDesc(I)Ljava/lang/String;
    move-result-object v3
    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    const-string v3, "], engine role: "
    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEngineRole: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
    invoke-static {v2, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    const/4 v0, 0x5
    if-ne p1, v0, :cond_77
    iget-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mForceUseA2dp:Z
    if-nez p1, :cond_6d
    const-string p1, "enable hfp"
    invoke-static {v2, p1}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V
    const/4 p1, 0x1
    iput-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->startTimer()V
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->startBtSco()V
    goto :goto_87
    :cond_6d
    iget-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    if-eqz p1, :cond_87
    const-string p1, "enable a2dp"
    invoke-static {v2, p1}, Lio/agora/rtc2/internal/Logging;->w(Ljava/lang/String;Ljava/lang/String;)V
    goto :goto_7f
    :cond_77
    iget p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mCurrentRouting:I
    if-ne p1, v0, :cond_87
    iget-boolean p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    if-eqz p1, :cond_87
    :goto_7f
    iput-boolean v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTScoStarted:Z
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->cancelTimer()V
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->stopBtSco()V
    :cond_87
    :goto_87
    return v1
.end method
# virtual methods
.method public checkVersion(I)Z
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "version"
        }
    .end annotation
    iget v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVersionInUsed:I
    const/4 v1, 0x1
    if-nez v0, :cond_d
    if-ne p1, v1, :cond_d
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
    const/16 v2, 0x17
    if-ge v0, v2, :cond_13
    :cond_d
    iget v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVersionInUsed:I
    if-ne v0, v1, :cond_16
    if-nez p1, :cond_16
    :cond_13
    iput p1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVersionInUsed:I
    goto :goto_17
    :cond_16
    const/4 v1, 0x0
    :goto_17
    if-eqz v1, :cond_1f
    invoke-virtual {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->dispose()V
    invoke-virtual {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->initialize()I
    :cond_1f
    return v1
.end method
.method public dispose()V
    .registers 4
    const-string v0, "AudioRoute"
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mThreadChecker:Lio/agora/base/internal/ThreadUtils$ThreadChecker;
    invoke-virtual {v1}, Lio/agora/base/internal/ThreadUtils$ThreadChecker;->checkIsOnValidThread()V
    iget-boolean v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDisposed:Z
    if-eqz v1, :cond_c
    return-void
    :cond_c
    const/4 v1, 0x1
    iput-boolean v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDisposed:Z
    const-wide/16 v1, 0x0
    iput-wide v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mNativeHandle:J
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    if-eqz v1, :cond_1a
    invoke-interface {v1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->dispose()V
    :cond_1a
    :try_start_1a
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    if-eqz v1, :cond_42
    invoke-virtual {v1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;->getRegistered()Z
    move-result v1
    if-eqz v1, :cond_42
    sget-object v1, Lio/agora/rtc2/internal/AudioRoutingController;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;
    if-eqz v1, :cond_2d
    iget-object v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    invoke-interface {v1, v2}, Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;->unRegisterReceiver(Landroid/content/BroadcastReceiver;)V
    :cond_2d
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->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-eqz v1, :cond_3c
    iget-object v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    invoke-virtual {v1, v2}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
    :cond_3c
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    const/4 v2, 0x0
    invoke-virtual {v1, v2}, Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;->setRegistered(Z)V
    :cond_42
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    invoke-virtual {v1}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;->getLooper()Landroid/os/Looper;
    move-result-object v1
    invoke-virtual {v1}, Landroid/os/Looper;->quit()V
    :try_end_4b
    .catch Ljava/lang/Exception; {:try_start_1a .. :try_end_4b} :catch_4c
    goto :goto_52
    :catch_4c
    move-exception v1
    const-string v2, "AudioRoutingController dispose fail: "
    invoke-static {v0, v2, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :goto_52
    const-string v1, "dispose"
    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    return-void
.end method
.method public getCurrentUsbAudioDevicePID(I)Ljava/lang/String;
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "mic_or_spk"
        }
    .end annotation
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->deviceSpecialMonitor:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    if-eqz v0, :cond_9
    invoke-interface {v0, p1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;->GetUSBDevicePID(I)Ljava/lang/String;
    move-result-object v0
    goto :goto_a
    :cond_9
    const/4 v0, 0x0
    :goto_a
    const/4 v1, 0x2
    new-array v1, v1, [Ljava/lang/Object;
    const/4 v2, 0x0
    invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    move-result-object p1
    aput-object p1, v1, v2
    const/4 p1, 0x1
    if-nez v0, :cond_1a
    const-string v2, "null"
    goto :goto_1b
    :cond_1a
    move-object v2, v0
    :goto_1b
    aput-object v2, v1, p1
    const-string p1, "getPIDFromNative: mic_or_spk=%d, pid=%s"
    invoke-static {p1, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
    move-result-object p1
    const-string v1, "AudioRoute"
    invoke-static {v1, p1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    return-object v0
.end method
.method public getCurrentUsbAudioDeviceVID(I)Ljava/lang/String;
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "mic_or_spk"
        }
    .end annotation
    sget-object v0, Lio/agora/rtc2/internal/AudioRoutingController;->deviceSpecialMonitor:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;
    if-eqz v0, :cond_9
    invoke-interface {v0, p1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedSpecialMonitor;->GetUSBDeviceVID(I)Ljava/lang/String;
    move-result-object v0
    goto :goto_a
    :cond_9
    const/4 v0, 0x0
    :goto_a
    const/4 v1, 0x2
    new-array v1, v1, [Ljava/lang/Object;
    const/4 v2, 0x0
    invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    move-result-object p1
    aput-object p1, v1, v2
    const/4 p1, 0x1
    if-nez v0, :cond_1a
    const-string v2, "null"
    goto :goto_1b
    :cond_1a
    move-object v2, v0
    :goto_1b
    aput-object v2, v1, p1
    const-string p1, "getVIDFromNative: mic_or_spk=%d, vid=%s"
    invoke-static {p1, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
    move-result-object p1
    const-string v1, "AudioRoute"
    invoke-static {v1, p1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    return-object v0
.end method
.method public getNativeHandle()J
    .registers 3
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->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/AudioRoutingController;->mNativeHandle:J
    return-wide v0
.end method
.method public initialize()I
    .registers 10
    const-string v0, "AudioRoute"
    const-string v1, "initialize +"
    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->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_18
    const-string v1, "context has been GCed"
    :goto_14
    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
    return v2
    :cond_18
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v3
    if-nez v3, :cond_21
    const-string v1, "invalid context: can\'t get AudioManager"
    goto :goto_14
    :cond_21
    new-instance v4, Lio/agora/rtc2/internal/AudioRoutingController$ControllerAudioDeviceChangeCallback;
    const/4 v5, 0x0
    invoke-direct {v4, p0, v5}, Lio/agora/rtc2/internal/AudioRoutingController$ControllerAudioDeviceChangeCallback;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;Lio/agora/rtc2/internal/AudioRoutingController$1;)V
    iput-object v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->ctrlAudioDeviceCb:Lio/agora/rtc2/internal/AudioRoutingController$ControllerAudioDeviceChangeCallback;
    invoke-static {v4}, Lio/agora/base/internal/voiceengine/WebRtcAudioRecord;->setRecordRouteCallback(Lio/agora/base/internal/voiceengine/WebRtcAudioRecord$AudioRecordRouteCallback;)V
    iget-object v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->ctrlAudioDeviceCb:Lio/agora/rtc2/internal/AudioRoutingController$ControllerAudioDeviceChangeCallback;
    invoke-static {v4}, Lio/agora/base/internal/voiceengine/WebRtcAudioTrack;->setTrackRouteCallback(Lio/agora/base/internal/voiceengine/WebRtcAudioTrack$AudioTrackRouteCallback;)V
    new-instance v4, Landroid/os/HandlerThread;
    invoke-direct {v4, v0}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;)V
    invoke-virtual {v4}, Landroid/os/HandlerThread;->start()V
    new-instance v6, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    invoke-virtual {v4}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
    move-result-object v4
    invoke-direct {v6, p0, v4}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;Landroid/os/Looper;)V
    iput-object v6, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    iget v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mVersionInUsed:I
    const/4 v6, 0x1
    if-ne v4, v6, :cond_55
    sget v4, Landroid/os/Build$VERSION;->SDK_INT:I
    const/16 v7, 0x17
    if-lt v4, v7, :cond_55
    new-instance v4, Lio/agora/rtc2/internal/AudioDeviceInventoryMorHigher;
    invoke-direct {v4, v1}, Lio/agora/rtc2/internal/AudioDeviceInventoryMorHigher;-><init>(Landroid/content/Context;)V
    goto :goto_5a
    :cond_55
    new-instance v4, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;
    invoke-direct {v4, v1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;-><init>(Landroid/content/Context;)V
    :goto_5a
    iput-object v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    iget-object v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    new-instance v7, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallbackImpl;
    invoke-direct {v7, p0, v5}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallbackImpl;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;Lio/agora/rtc2/internal/AudioRoutingController$1;)V
    invoke-interface {v4, v7}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->setAudioDeviceChangeCallback(Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;)V
    iget-object v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    invoke-interface {v4}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->initialize()V
    sget-object v4, Lio/agora/rtc2/internal/AudioRoutingController;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;
    const/4 v7, 0x0
    if-eqz v4, :cond_7b
    invoke-virtual {v3}, Landroid/media/AudioManager;->isWiredHeadsetOn()Z
    move-result v4
    iput-boolean v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    if-eqz v4, :cond_79
    move v2, v7
    :cond_79
    iput v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    :cond_7b
    iget-object v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    invoke-interface {v2, v7}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->isDeviceAvaliable(I)Z
    move-result v2
    const/4 v4, 0x2
    if-eqz v2, :cond_89
    iput-boolean v6, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    iput v7, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    goto :goto_95
    :cond_89
    iget-object v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    invoke-interface {v2, v4}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->isDeviceAvaliable(I)Z
    move-result v2
    if-eqz v2, :cond_95
    iput-boolean v6, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    iput v4, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    :cond_95
    :goto_95
    new-instance v2, Ljava/lang/StringBuilder;
    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    const-string v8, "Headset setup: Plugged = "
    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget-boolean v8, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    const-string v8, " mHeadsetType "
    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v8, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v2
    invoke-static {v0, v2}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    iget-object v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mAudioDeviceInventory:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;
    const/4 v8, 0x5
    invoke-interface {v2, v8}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;->isDeviceAvaliable(I)Z
    move-result v2
    iput-boolean v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    new-instance v2, Ljava/lang/StringBuilder;
    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    const-string v8, "BT Headset setup: Plugged = "
    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget-boolean v8, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v2
    invoke-static {v0, v2}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    invoke-virtual {v3}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v2
    if-eqz v2, :cond_dc
    move v2, v6
    goto :goto_dd
    :cond_dc
    const/4 v2, 0x3
    :goto_dd
    iput v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    new-instance v2, Ljava/lang/StringBuilder;
    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    const-string v3, "initial Bluetooth SCO state "
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mBtScoState:I
    if-ne v3, v6, :cond_f0
    const-string v3, " enable "
    goto :goto_f2
    :cond_f0
    const-string v3, " disable"
    :goto_f2
    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v2
    invoke-static {v0, v2}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    new-instance v2, Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    invoke-direct {v2, p0, v5}, Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;Lio/agora/rtc2/internal/AudioRoutingController$1;)V
    iput-object v2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    new-instance v2, Landroid/content/IntentFilter;
    const-string v3, "android.media.ACTION_SCO_AUDIO_STATE_UPDATED"
    invoke-direct {v2, v3}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
    iget-object v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    invoke-virtual {v1, v3, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
    sget-object v1, Lio/agora/rtc2/internal/AudioRoutingController;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;
    if-eqz v1, :cond_118
    iget-object v3, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    invoke-interface {v1, v3, v2}, Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
    :cond_118
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mScoStateReceiver:Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;
    invoke-virtual {v1, v6}, Lio/agora/rtc2/internal/AudioRoutingController$AudioManagerScoStateReceiver;->setRegistered(Z)V
    iput-boolean v7, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDisposed:Z
    invoke-direct {p0, v4}, Lio/agora/rtc2/internal/AudioRoutingController;->changeState(I)Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    move-result-object v1
    iput-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mState:Lio/agora/rtc2/internal/AudioRoutingController$ControllerState;
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->setupHotPlugDeviceInitValue()V
    const-string v1, "initialize -"
    invoke-static {v0, v1}, Lio/agora/rtc2/internal/Logging;->i(Ljava/lang/String;Ljava/lang/String;)V
    return v7
.end method
.method public queryCurrentAudioRouting()I
    .registers 4
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getAudioManager()Landroid/media/AudioManager;
    move-result-object v0
    :try_start_4
    invoke-virtual {v0}, Landroid/media/AudioManager;->isSpeakerphoneOn()Z
    move-result v1
    if-eqz v1, :cond_c
    const/4 v0, 0x3
    return v0
    :cond_c
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothScoOn()Z
    move-result v1
    if-nez v1, :cond_2e
    invoke-virtual {v0}, Landroid/media/AudioManager;->isBluetoothA2dpOn()Z
    move-result v1
    if-eqz v1, :cond_19
    goto :goto_2e
    :cond_19
    invoke-virtual {v0}, Landroid/media/AudioManager;->isWiredHeadsetOn()Z
    move-result v0
    if-eqz v0, :cond_21
    const/4 v0, 0x0
    return v0
    :cond_21
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioRoutingController;->getCurrSystemRouting()I
    move-result v0
    :try_end_25
    .catch Ljava/lang/Exception; {:try_start_4 .. :try_end_25} :catch_30
    const/4 v1, 0x7
    if-eq v0, v1, :cond_2d
    const/4 v1, 0x6
    if-ne v0, v1, :cond_2c
    goto :goto_2d
    :cond_2c
    const/4 v0, 0x1
    :cond_2d
    :goto_2d
    return v0
    :cond_2e
    :goto_2e
    const/4 v0, 0x5
    return v0
    :catch_30
    move-exception v0
    const-string v1, "AudioRoute"
    const-string v2, "fatal error @queryCurrentAudioRouting"
    invoke-static {v1, v2, v0}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    const/4 v0, -0x1
    return v0
.end method
.method public sendEvent(II)V
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "event",
            "arg"
        }
    .end annotation
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "sendEvent: ["
    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;
    const-string v1, "], extra arg: "
    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, "... "
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object v0
    const-string v1, "AudioRoute"
    invoke-static {v1, v0}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    if-eqz v0, :cond_36
    const/4 v1, 0x0
    invoke-virtual {v0, p1, p2, v1}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;->obtainMessage(III)Landroid/os/Message;
    move-result-object p1
    iget-object p2, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    invoke-virtual {p2, p1}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;->sendMessage(Landroid/os/Message;)Z
    :cond_36
    return-void
.end method
.method public startMonitoring()I
    .registers 3
    const-string v0, "AudioRoute"
    const-string v1, "startMonitoring()"
    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/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    new-instance v1, Lio/agora/rtc2/internal/AudioRoutingController$2;
    invoke-direct {v1, p0}, Lio/agora/rtc2/internal/AudioRoutingController$2;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;)V
    invoke-virtual {v0, v1}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;->post(Ljava/lang/Runnable;)Z
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsBTHeadsetPlugged:Z
    if-eqz v0, :cond_17
    const/4 v0, 0x5
    goto :goto_20
    :cond_17
    iget-boolean v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mIsWiredHeadsetPlugged:Z
    if-eqz v0, :cond_1e
    iget v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mHeadsetType:I
    goto :goto_20
    :cond_1e
    iget v0, p0, Lio/agora/rtc2/internal/AudioRoutingController;->mDefaultRouting:I
    :goto_20
    return v0
.end method
.method public stopMonitoring()V
    .registers 3
    const-string v0, "AudioRoute"
    const-string v1, "stopMonitoring()"
    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/AudioRoutingController;->mEventHandler:Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;
    new-instance v1, Lio/agora/rtc2/internal/AudioRoutingController$3;
    invoke-direct {v1, p0}, Lio/agora/rtc2/internal/AudioRoutingController$3;-><init>(Lio/agora/rtc2/internal/AudioRoutingController;)V
    invoke-virtual {v0, v1}, Lio/agora/rtc2/internal/AudioRoutingController$EventHandler;->post(Ljava/lang/Runnable;)Z
    return-void
.end method