AudioDeviceInventoryLowerThanM.smali

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

# interfaces
.implements Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceInventory;


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;,
        Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;
    }
.end annotation


# static fields
.field private static final ANDROID_SNOW_CONE:I = 0x1f

.field private static final PERMISSION_BLUETOOTH_CONNECT:Ljava/lang/String; = "android.permission.BLUETOOTH_CONNECT"

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

.field private static mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;


# instance fields
.field private final HEADSET_EXTRA_STATE:Ljava/lang/String;

.field private final STATE_CONNECT:I

.field private final STATE_DISCONNECT:I

.field private mAudioDeviceChangedCb:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;

.field private mBTAdapter:Landroid/bluetooth/BluetoothAdapter;

.field private mBTHeadset:Landroid/bluetooth/BluetoothHeadset;

.field private mBTHeadsetListener:Landroid/bluetooth/BluetoothProfile$ServiceListener;

.field private mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

.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 mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

.field private mHeadsetType:I


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

    return-void
.end method

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

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

    const/4 v0, -0x1

    iput v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->STATE_DISCONNECT:I

    const/4 v1, 0x1

    iput v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->STATE_CONNECT:I

    const-string v1, "state"

    iput-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->HEADSET_EXTRA_STATE:Ljava/lang/String;

    const/4 v1, 0x0

    iput-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    iput-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    iput v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetType:I

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

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

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

    const-string p1, "AudioRoute"

    const-string v0, "AudioDeviceInventoryLowerThanM ctor!"

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

    return-void
.end method

.method static synthetic access$202(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;Landroid/bluetooth/BluetoothHeadset;)Landroid/bluetooth/BluetoothHeadset;
    .registers 2

    iput-object p1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadset:Landroid/bluetooth/BluetoothHeadset;

    return-object p1
.end method

.method static synthetic access$300(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;I)V
    .registers 2

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

    return-void
.end method

.method static synthetic access$400(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;Landroid/content/Intent;)Z
    .registers 2

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->processHeadsetIntent(Landroid/content/Intent;)Z

    move-result p0

    return p0
.end method

.method static synthetic access$500(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;)I
    .registers 1

    iget p0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetType:I

    return p0
.end method

.method static synthetic access$600(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;IZ)V
    .registers 3

    invoke-direct {p0, p1, p2}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->onAudioDeviceChanged(IZ)V

    return-void
.end method

.method static synthetic access$700(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;Landroid/content/Intent;)V
    .registers 2

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->processBluetoothIntent(Landroid/content/Intent;)V

    return-void
.end method

.method private clearBTResource()V
    .registers 5

    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTAdapter:Landroid/bluetooth/BluetoothAdapter;

    const/4 v1, 0x0

    if-eqz v0, :cond_d

    const/4 v2, 0x1

    iget-object v3, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadset:Landroid/bluetooth/BluetoothHeadset;

    invoke-virtual {v0, v2, v3}, Landroid/bluetooth/BluetoothAdapter;->closeProfileProxy(ILandroid/bluetooth/BluetoothProfile;)V

    iput-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTAdapter:Landroid/bluetooth/BluetoothAdapter;

    :cond_d
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetListener:Landroid/bluetooth/BluetoothProfile$ServiceListener;

    if-eqz v0, :cond_13

    iput-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetListener:Landroid/bluetooth/BluetoothProfile$ServiceListener;

    :cond_13
    return-void
.end method

.method private getBtConnectedDevicesSize()I
    .registers 8

    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadset:Landroid/bluetooth/BluetoothHeadset;

    const/4 v1, 0x0

    if-nez v0, :cond_6

    return v1

    :cond_6
    :try_start_6
    invoke-virtual {v0}, Landroid/bluetooth/BluetoothHeadset;->getConnectedDevices()Ljava/util/List;

    move-result-object v0

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

    move-result-object v2

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

    move-result v3

    if-eqz v3, :cond_35

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

    move-result-object v3

    check-cast v3, Landroid/bluetooth/BluetoothDevice;

    const-string v4, "AudioRoute"

    new-instance v5, Ljava/lang/StringBuilder;

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

    const-string v6, "connected device name: "

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

    invoke-virtual {v3}, Landroid/bluetooth/BluetoothDevice;->getName()Ljava/lang/String;

    move-result-object v3

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

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

    move-result-object v3

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

    goto :goto_e

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

    move-result v1
    :try_end_39
    .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_39} :catch_3a

    goto :goto_3e

    :catch_3a
    move-exception v0

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

    :goto_3e
    return v1
.end method

.method private initBluetoothProfileListener()V
    .registers 4

    :try_start_0
    new-instance v0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$1;

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

    iput-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetListener:Landroid/bluetooth/BluetoothProfile$ServiceListener;
    :try_end_7
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_7} :catch_8

    goto :goto_23

    :catch_8
    move-exception v0

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "initialize failed: unable to create BluetoothProfile.ServiceListener, err="

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

    invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;

    move-result-object v0

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

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

    move-result-object v0

    const-string v1, "AudioRoute"

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

    :goto_23
    return-void
.end method

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

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

    const/16 v1, 0x1f

    const-string v2, "AudioRoute"

    if-lt v0, v1, :cond_10

    const-string v0, "android.permission.BLUETOOTH_CONNECT"

    invoke-virtual {p0, p1, v0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->hasPermission(Landroid/content/Context;Ljava/lang/String;)Z

    move-result v0

    if-eqz v0, :cond_1c

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

    if-ge v0, v1, :cond_22

    const-string v0, "android.permission.BLUETOOTH"

    invoke-virtual {p0, p1, v0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->hasPermission(Landroid/content/Context;Ljava/lang/String;)Z

    move-result v0

    if-nez v0, :cond_22

    :cond_1c
    const-string p1, "do not support BT monitoring on this device"

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

    return-void

    :cond_22
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->initBluetoothProfileListener()V

    :try_start_25
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    if-nez v0, :cond_31

    new-instance v0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    const/4 v1, 0x0

    invoke-direct {v0, p0, v1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;-><init>(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$1;)V

    iput-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    :cond_31
    invoke-static {}, Landroid/bluetooth/BluetoothAdapter;->getDefaultAdapter()Landroid/bluetooth/BluetoothAdapter;

    move-result-object v0

    iput-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTAdapter:Landroid/bluetooth/BluetoothAdapter;

    if-eqz v0, :cond_67

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetListener:Landroid/bluetooth/BluetoothProfile$ServiceListener;

    const/4 v3, 0x1

    invoke-virtual {v0, p1, v1, v3}, Landroid/bluetooth/BluetoothAdapter;->getProfileProxy(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;I)Z

    new-instance v0, Landroid/content/IntentFilter;

    const-string v1, "android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED"

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

    const-string v1, "android.bluetooth.adapter.action.STATE_CHANGED"

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

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    invoke-virtual {v1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;->getRegistered()Z

    move-result v1

    if-nez v1, :cond_86

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

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

    sget-object p1, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;

    if-eqz p1, :cond_61

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    invoke-interface {p1, v1, v0}, Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V

    :cond_61
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    invoke-virtual {p1, v3}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;->setRegistered(Z)V

    goto :goto_86

    :cond_67
    const-string p1, "initialize: failed to get bluetooth adapter!!"

    invoke-static {v2, p1}, Lio/agora/rtc2/internal/Logging;->e(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_6c
    .catch Ljava/lang/Exception; {:try_start_25 .. :try_end_6c} :catch_6d

    return-void

    :catch_6d
    move-exception p1

    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string v1, "unable to create BluetoothHeadsetBroadcastReceiver, err:"

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

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

    move-result-object p1

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

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

    move-result-object p1

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

    :cond_86
    :goto_86
    return-void
.end method

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

    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    if-nez v0, :cond_c

    new-instance v0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    const/4 v1, 0x0

    invoke-direct {v0, p0, v1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;-><init>(Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$1;)V

    iput-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    :cond_c
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    invoke-virtual {v0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;->getRegistered()Z

    move-result v0

    if-nez v0, :cond_3f

    new-instance v0, Landroid/content/IntentFilter;

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

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

    iget-object v2, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

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

    move-result-object p1

    if-eqz p1, :cond_30

    invoke-virtual {p1}, Landroid/content/Intent;->getAction()Ljava/lang/String;

    move-result-object v2

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

    move-result v1

    if-eqz v1, :cond_30

    invoke-direct {p0, p1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->processHeadsetIntent(Landroid/content/Intent;)Z

    :cond_30
    sget-object p1, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;

    if-eqz p1, :cond_39

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    invoke-interface {p1, v1, v0}, Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V

    :cond_39
    iget-object p1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    const/4 v0, 0x1

    invoke-virtual {p1, v0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;->setRegistered(Z)V

    :cond_3f
    return-void
.end method

.method private onAudioDeviceChanged(IZ)V
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "route",
            "connect"
        }
    .end annotation

    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string v1, "onAudioDeviceChanged 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;

    const-string v1, " status: "

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

    if-eqz p2, :cond_17

    const-string v1, "connect"

    goto :goto_19

    :cond_17
    const-string v1, "disconnect"

    :goto_19
    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

    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mAudioDeviceChangedCb:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;

    if-eqz v0, :cond_2c

    invoke-interface {v0, p2, p1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;->onAudioDeviceChanged(ZI)V

    :cond_2c
    return-void
.end method

.method private onAudioDeviceEvent(I)V
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "devEvt"
        }
    .end annotation

    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mAudioDeviceChangedCb:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;

    if-eqz v0, :cond_7

    invoke-interface {v0, p1}, Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;->onAudioDeviceEvent(I)V

    :cond_7
    return-void
.end method

.method private processBluetoothIntent(Landroid/content/Intent;)V
    .registers 11
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "intent"
        }
    .end annotation

    const-string v0, "AudioRoute"

    invoke-virtual {p1}, Landroid/content/Intent;->getAction()Ljava/lang/String;

    move-result-object v1

    :try_start_6
    const-string v2, "android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED"

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

    move-result v2
    :try_end_c
    .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_c} :catch_e7

    const/4 v3, 0x0

    const-string v4, ", "

    const/4 v5, 0x5

    const/16 v6, -0x63

    if-eqz v2, :cond_b4

    :try_start_14
    const-string v1, "android.bluetooth.profile.extra.STATE"

    invoke-virtual {p1, v1, v6}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v1

    const-string v2, "android.bluetooth.profile.extra.PREVIOUS_STATE"

    invoke-virtual {p1, v2, v6}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v2

    const-string v6, "android.bluetooth.device.extra.DEVICE"

    invoke-virtual {p1, v6}, Landroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;

    move-result-object p1

    check-cast p1, Landroid/bluetooth/BluetoothDevice;

    if-eqz p1, :cond_2f

    invoke-virtual {p1}, Landroid/bluetooth/BluetoothDevice;->getName()Ljava/lang/String;

    move-result-object v6

    goto :goto_31

    :cond_2f
    const-string v6, "null name"

    :goto_31
    new-instance v7, Ljava/lang/StringBuilder;

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

    const-string v8, "BT "

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

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

    const-string v6, " hfp connect state : "

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

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

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

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

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

    move-result-object v2

    invoke-static {v0, v2}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_53
    .catch Ljava/lang/Exception; {:try_start_14 .. :try_end_53} :catch_e7

    const/4 v2, 0x1

    const-string v4, "Bluetooth device "

    if-eqz v1, :cond_8f

    const/4 v3, 0x2

    if-eq v1, v3, :cond_74

    :try_start_5b
    new-instance v2, Ljava/lang/StringBuilder;

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

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

    const-string p1, " unknown event, state="

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

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

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

    move-result-object p1

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

    goto/16 :goto_ed

    :cond_74
    new-instance v1, Ljava/lang/StringBuilder;

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

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

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

    const-string p1, " connected"

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

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

    move-result-object p1

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

    invoke-direct {p0, v5, v2}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->onAudioDeviceChanged(IZ)V

    goto :goto_ed

    :cond_8f
    new-instance v1, Ljava/lang/StringBuilder;

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

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

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

    const-string p1, " disconnected"

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

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

    move-result-object p1

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

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

    move-result p1

    if-nez p1, :cond_b0

    :cond_ac
    invoke-direct {p0, v5, v3}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->onAudioDeviceChanged(IZ)V

    goto :goto_ed

    :cond_b0
    invoke-direct {p0, v2}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->onAudioDeviceEvent(I)V

    goto :goto_ed

    :cond_b4
    const-string v2, "android.bluetooth.adapter.action.STATE_CHANGED"

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

    move-result v1

    if-eqz v1, :cond_ed

    const-string v1, "android.bluetooth.adapter.extra.STATE"

    invoke-virtual {p1, v1, v6}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v1

    const-string v2, "android.bluetooth.adapter.extra.PREVIOUS_STATE"

    invoke-virtual {p1, v2, v6}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result p1

    new-instance v2, Ljava/lang/StringBuilder;

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

    const-string v6, "BluetoothAdapter.ACTION_STATE_CHANGED prev "

    invoke-virtual {v2, v6}, 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, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

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

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

    move-result-object p1

    invoke-static {v0, p1}, Lio/agora/rtc2/internal/Logging;->d(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_e2
    .catch Ljava/lang/Exception; {:try_start_5b .. :try_end_e2} :catch_e7

    const/16 p1, 0xa

    if-eq v1, p1, :cond_ac

    goto :goto_ed

    :catch_e7
    move-exception p1

    const-string v1, "BT broadcast receiver onReceive fail "

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

    :cond_ed
    :goto_ed
    return-void
.end method

.method private processHeadsetIntent(Landroid/content/Intent;)Z
    .registers 5
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "intent"
        }
    .end annotation

    const-string v0, "state"

    const/4 v1, -0x1

    invoke-virtual {p1, v0, v1}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v0

    const-string v2, "microphone"

    invoke-virtual {p1, v2, v1}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result p1

    const/4 v1, 0x0

    const/4 v2, 0x1

    if-ne v0, v2, :cond_18

    if-ne p1, v2, :cond_15

    move p1, v1

    goto :goto_16

    :cond_15
    const/4 p1, 0x2

    :goto_16
    iput p1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetType:I

    :cond_18
    if-ne v0, v2, :cond_1b

    move v1, v2

    :cond_1b
    return v1
.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/AudioDeviceInventoryLowerThanM;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;

    return-void
.end method


# virtual methods
.method public dispose()V
    .registers 5

    :try_start_0
    invoke-direct {p0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->clearBTResource()V

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

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

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    if-eqz v0, :cond_48

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    const/4 v2, 0x0

    if-eqz v1, :cond_2b

    invoke-virtual {v1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;->getRegistered()Z

    move-result v1

    if-eqz v1, :cond_2b

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

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

    sget-object v1, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;

    if-eqz v1, :cond_26

    iget-object v3, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    invoke-interface {v1, v3}, Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;->unRegisterReceiver(Landroid/content/BroadcastReceiver;)V

    :cond_26
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    invoke-virtual {v1, v2}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;->setRegistered(Z)V

    :cond_2b
    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    if-eqz v1, :cond_48

    invoke-virtual {v1}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;->getRegistered()Z

    move-result v1

    if-eqz v1, :cond_48

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

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

    sget-object v0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mockedBroadcaster:Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;

    if-eqz v0, :cond_43

    iget-object v1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    invoke-interface {v0, v1}, Lio/agora/rtc2/internal/AudioRoutingController$MockedBroadcaseter;->unRegisterReceiver(Landroid/content/BroadcastReceiver;)V

    :cond_43
    iget-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;

    invoke-virtual {v0, v2}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;->setRegistered(Z)V

    :cond_48
    const/4 v0, 0x0

    iput-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$HeadsetBroadcastReceiver;

    iput-object v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTHeadsetReceiver:Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM$BTHeadsetBroadcastReceiver;
    :try_end_4d
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4d} :catch_4e

    goto :goto_56

    :catch_4e
    move-exception v0

    const-string v1, "AudioRoute"

    const-string v2, "AudioDeviceInventoryLowerThanM dispose fail: "

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

    :goto_56
    return-void
.end method

.method protected hasPermission(Landroid/content/Context;Ljava/lang/String;)Z
    .registers 3
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0,
            0x0
        }
        names = {
            "context",
            "permission"
        }
    .end annotation

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

    move-result p1

    if-nez p1, :cond_8

    const/4 p1, 0x1

    goto :goto_9

    :cond_8
    const/4 p1, 0x0

    :goto_9
    return p1
.end method

.method public initialize()V
    .registers 4

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

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

    move-result-object v0

    check-cast v0, Landroid/content/Context;

    const-string v1, "AudioRoute"

    const-string v2, "AudioDeviceInventoryLowerThanM initialize +"

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

    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->initHeadsetBroadcastReceiver(Landroid/content/Context;)V

    invoke-direct {p0, v0}, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->initBtBroadcastReceiver(Landroid/content/Context;)V

    return-void
.end method

.method public isDeviceAvaliable(I)Z
    .registers 6
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "route"
        }
    .end annotation

    const/4 v0, 0x2

    const/4 v1, 0x0

    const/4 v2, 0x1

    const/4 v3, 0x5

    if-ne p1, v3, :cond_12

    iget-object p1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mBTAdapter:Landroid/bluetooth/BluetoothAdapter;

    if-eqz p1, :cond_1b

    invoke-virtual {p1, v2}, Landroid/bluetooth/BluetoothAdapter;->getProfileConnectionState(I)I

    move-result p1

    if-ne v0, p1, :cond_1b

    :goto_10
    move v1, v2

    goto :goto_1b

    :cond_12
    if-eqz p1, :cond_16

    if-ne p1, v0, :cond_1b

    :cond_16
    iget v0, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mHeadsetType:I

    if-ne v0, p1, :cond_1b

    goto :goto_10

    :cond_1b
    :goto_1b
    return v1
.end method

.method public setAudioDeviceChangeCallback(Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;)V
    .registers 2
    .annotation system Ldalvik/annotation/MethodParameters;
        accessFlags = {
            0x0
        }
        names = {
            "cb"
        }
    .end annotation

    iput-object p1, p0, Lio/agora/rtc2/internal/AudioDeviceInventoryLowerThanM;->mAudioDeviceChangedCb:Lio/agora/rtc2/internal/AudioRoutingController$AudioDeviceChangedCallback;

    return-void
.end method