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