AppRTCAudioManager.smali
.class public Lorg/webrtc/audio/AppRTCAudioManager;
.super Ljava/lang/Object;
.source "AppRTCAudioManager.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lorg/webrtc/audio/AppRTCAudioManager$WiredHeadsetReceiver;,
Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;,
Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;,
Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
}
.end annotation
# static fields
.field private static final SPEAKERPHONE_AUTO:Ljava/lang/String; = "auto"
.field private static final SPEAKERPHONE_FALSE:Ljava/lang/String; = "false"
.field private static final SPEAKERPHONE_TRUE:Ljava/lang/String; = "true"
.field private static final TAG:Ljava/lang/String; = "AppRTCAudioManager"
# instance fields
.field private amState:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
.field private apprtcContext:Ljava/lang/ref/WeakReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/ref/WeakReference<",
"Landroid/content/Context;",
">;"
}
.end annotation
.end field
.field private audioDevices:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set<",
"Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;",
">;"
}
.end annotation
.end field
.field private audioFocusChangeListener:Landroid/media/AudioManager$OnAudioFocusChangeListener;
.field private audioManager:Landroid/media/AudioManager;
.field private audioManagerEvents:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;
.field private final bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.field private defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.field private hasWiredHeadset:Z
.field private mActivityCallbacks:Landroid/app/Application$ActivityLifecycleCallbacks;
.field private mAudioFocusLost:Z
.field private mFromBackground:Z
.field private mIsBasicMusicMode:Z
.field private mPhoneStateListener:Landroid/telephony/PhoneStateListener;
.field private volatile mReceiverTag:Z
.field private mSpeakerOnWhenRinging:Z
.field private proximitySensor:Lorg/webrtc/audio/AppRTCProximitySensor;
.field private savedAudioMode:I
.field private savedIsMicrophoneMute:Z
.field private savedIsSpeakerPhoneOn:Z
.field private volatile selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.field private telephonyManager:Landroid/telephony/TelephonyManager;
.field private final useSpeakerphone:Ljava/lang/String;
.field private userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.field private wiredHeadsetReceiver:Landroid/content/BroadcastReceiver;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>(Landroid/content/Context;)V
.registers 6
.param p1, "context" # Landroid/content/Context;
.line 266
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 84
const/4 v0, -0x2
iput v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedAudioMode:I
.line 85
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedIsSpeakerPhoneOn:Z
.line 86
iput-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedIsMicrophoneMute:Z
.line 87
iput-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
.line 130
const/4 v1, 0x0
iput-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->proximitySensor:Lorg/webrtc/audio/AppRTCProximitySensor;
.line 140
new-instance v2, Ljava/util/HashSet;
invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
.line 145
iput-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mReceiverTag:Z
.line 151
iput-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mIsBasicMusicMode:Z
.line 215
iput-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mAudioFocusLost:Z
.line 216
iput-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mFromBackground:Z
.line 217
new-instance v0, Lorg/webrtc/audio/AppRTCAudioManager$1;
invoke-direct {v0, p0}, Lorg/webrtc/audio/AppRTCAudioManager$1;-><init>(Lorg/webrtc/audio/AppRTCAudioManager;)V
iput-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mActivityCallbacks:Landroid/app/Application$ActivityLifecycleCallbacks;
.line 363
new-instance v0, Lorg/webrtc/audio/AppRTCAudioManager$4;
invoke-direct {v0, p0}, Lorg/webrtc/audio/AppRTCAudioManager$4;-><init>(Lorg/webrtc/audio/AppRTCAudioManager;)V
iput-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mPhoneStateListener:Landroid/telephony/PhoneStateListener;
.line 267
const-string v0, "AppRTCAudioManager"
const-string v2, "ctor"
invoke-static {v0, v2}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 268
invoke-static {}, Lorg/webrtc/ali/ThreadUtils;->checkIsOnMainThread()V
.line 269
new-instance v2, Ljava/lang/ref/WeakReference;
invoke-direct {v2, p1}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
.line 270
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/content/Context;
const-string v3, "audio"
invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/media/AudioManager;
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
.line 271
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/content/Context;
const-string v3, "phone"
invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/telephony/TelephonyManager;
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->telephonyManager:Landroid/telephony/TelephonyManager;
.line 272
invoke-static {p1, p0}, Lorg/webrtc/audio/AppRTCBluetoothManager;->create(Landroid/content/Context;Lorg/webrtc/audio/AppRTCAudioManager;)Lorg/webrtc/audio/AppRTCBluetoothManager;
move-result-object v2
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 273
new-instance v2, Lorg/webrtc/audio/AppRTCAudioManager$WiredHeadsetReceiver;
invoke-direct {v2, p0, v1}, Lorg/webrtc/audio/AppRTCAudioManager$WiredHeadsetReceiver;-><init>(Lorg/webrtc/audio/AppRTCAudioManager;Lorg/webrtc/audio/AppRTCAudioManager$1;)V
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->wiredHeadsetReceiver:Landroid/content/BroadcastReceiver;
.line 274
sget-object v1, Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;->UNINITIALIZED:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
iput-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->amState:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
.line 276
invoke-static {p1}, Landroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;
move-result-object v1
.line 277
.local v1, "sharedPreferences":Landroid/content/SharedPreferences;
sget v2, Lcom/aliyun/sophonsdk/R$string;->pref_speakerphone_key:I
invoke-virtual {p1, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String;
move-result-object v2
sget v3, Lcom/aliyun/sophonsdk/R$string;->pref_speakerphone_default:I
.line 278
invoke-virtual {p1, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String;
move-result-object v3
.line 277
invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->useSpeakerphone:Ljava/lang/String;
.line 279
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "useSpeakerphone: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->useSpeakerphone:Ljava/lang/String;
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}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 280
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->useSpeakerphone:Ljava/lang/String;
const-string v3, "false"
invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_ac
.line 281
sget-object v2, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->EARPIECE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
goto :goto_b0
.line 283
:cond_ac
sget-object v2, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->SPEAKER_PHONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 292
:goto_b0
new-instance v2, Lorg/webrtc/audio/AppRTCAudioManager$2;
invoke-direct {v2, p0}, Lorg/webrtc/audio/AppRTCAudioManager$2;-><init>(Lorg/webrtc/audio/AppRTCAudioManager;)V
invoke-static {p1, v2}, Lorg/webrtc/audio/AppRTCProximitySensor;->create(Landroid/content/Context;Ljava/lang/Runnable;)Lorg/webrtc/audio/AppRTCProximitySensor;
move-result-object v2
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->proximitySensor:Lorg/webrtc/audio/AppRTCProximitySensor;
.line 301
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "defaultAudioDevice: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v0, v2}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 302
invoke-static {v0}, Lorg/webrtc/utils/AppRTCUtils;->logDeviceInfo(Ljava/lang/String;)V
.line 303
return-void
.end method
.method static synthetic access$002(Lorg/webrtc/audio/AppRTCAudioManager;Z)Z
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.param p1, "x1" # Z
.line 47
iput-boolean p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
return p1
.end method
.method static synthetic access$100(Lorg/webrtc/audio/AppRTCAudioManager;)Z
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.line 47
iget-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mAudioFocusLost:Z
return v0
.end method
.method static synthetic access$102(Lorg/webrtc/audio/AppRTCAudioManager;Z)Z
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.param p1, "x1" # Z
.line 47
iput-boolean p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mAudioFocusLost:Z
return p1
.end method
.method static synthetic access$202(Lorg/webrtc/audio/AppRTCAudioManager;Z)Z
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.param p1, "x1" # Z
.line 47
iput-boolean p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mFromBackground:Z
return p1
.end method
.method static synthetic access$300(Lorg/webrtc/audio/AppRTCAudioManager;)I
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.line 47
invoke-direct {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->requestAudioFocus()I
move-result v0
return v0
.end method
.method static synthetic access$500(Lorg/webrtc/audio/AppRTCAudioManager;)V
.registers 1
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.line 47
invoke-direct {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->onProximitySensorChangedState()V
return-void
.end method
.method static synthetic access$600(Lorg/webrtc/audio/AppRTCAudioManager;)Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.line 47
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManagerEvents:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;
return-object v0
.end method
.method static synthetic access$700(Lorg/webrtc/audio/AppRTCAudioManager;)Landroid/media/AudioManager;
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.line 47
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
return-object v0
.end method
.method static synthetic access$800(Lorg/webrtc/audio/AppRTCAudioManager;)Z
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.line 47
iget-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mSpeakerOnWhenRinging:Z
return v0
.end method
.method static synthetic access$802(Lorg/webrtc/audio/AppRTCAudioManager;Z)Z
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.param p1, "x1" # Z
.line 47
iput-boolean p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mSpeakerOnWhenRinging:Z
return p1
.end method
.method static synthetic access$900(Lorg/webrtc/audio/AppRTCAudioManager;Z)V
.registers 2
.param p0, "x0" # Lorg/webrtc/audio/AppRTCAudioManager;
.param p1, "x1" # Z
.line 47
invoke-direct {p0, p1}, Lorg/webrtc/audio/AppRTCAudioManager;->setSpeakerphoneOn(Z)V
return-void
.end method
.method public static create(Landroid/content/Context;)Lorg/webrtc/audio/AppRTCAudioManager;
.registers 2
.param p0, "context" # Landroid/content/Context;
.line 263
new-instance v0, Lorg/webrtc/audio/AppRTCAudioManager;
invoke-direct {v0, p0}, Lorg/webrtc/audio/AppRTCAudioManager;-><init>(Landroid/content/Context;)V
return-object v0
.end method
.method private hasEarpiece()Z
.registers 3
.line 725
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
invoke-virtual {v0}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/Context;
invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v0
const-string v1, "android.hardware.telephony"
invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->hasSystemFeature(Ljava/lang/String;)Z
move-result v0
return v0
.end method
.method private hasWiredHeadset()Z
.registers 2
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 745
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v0}, Landroid/media/AudioManager;->isWiredHeadsetOn()Z
move-result v0
return v0
.end method
.method private onProximitySensorChangedState()V
.registers 3
.line 163
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->useSpeakerphone:Ljava/lang/String;
const-string v1, "auto"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_b
.line 164
return-void
.line 171
:cond_b
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->size()I
move-result v0
const/4 v1, 0x2
if-ne v0, v1, :cond_3b
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
sget-object v1, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->EARPIECE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_3b
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
sget-object v1, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->SPEAKER_PHONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 172
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_3b
.line 173
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->proximitySensor:Lorg/webrtc/audio/AppRTCProximitySensor;
invoke-virtual {v0}, Lorg/webrtc/audio/AppRTCProximitySensor;->sensorReportsNearState()Z
move-result v0
if-eqz v0, :cond_36
.line 178
sget-object v0, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->EARPIECE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-direct {p0, v0}, Lorg/webrtc/audio/AppRTCAudioManager;->setAudioDeviceInternal(Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;)V
goto :goto_3b
.line 184
:cond_36
sget-object v0, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->SPEAKER_PHONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-direct {p0, v0}, Lorg/webrtc/audio/AppRTCAudioManager;->setAudioDeviceInternal(Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;)V
.line 187
:cond_3b
:goto_3b
return-void
.end method
.method private registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
.registers 4
.param p1, "receiver" # Landroid/content/BroadcastReceiver;
.param p2, "filter" # Landroid/content/IntentFilter;
.line 612
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext: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;
.line 613
.local v0, "context":Landroid/content/Context;
if-eqz v0, :cond_d
.line 614
invoke-virtual {v0, p1, p2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
.line 617
:cond_d
return-void
.end method
.method private requestAudioFocus()I
.registers 5
.line 306
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioFocusChangeListener:Landroid/media/AudioManager$OnAudioFocusChangeListener;
if-nez v0, :cond_b
.line 309
new-instance v0, Lorg/webrtc/audio/AppRTCAudioManager$3;
invoke-direct {v0, p0}, Lorg/webrtc/audio/AppRTCAudioManager$3;-><init>(Lorg/webrtc/audio/AppRTCAudioManager;)V
iput-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioFocusChangeListener:Landroid/media/AudioManager$OnAudioFocusChangeListener;
.line 359
:cond_b
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
const/4 v1, 0x0
if-eqz v0, :cond_17
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioFocusChangeListener:Landroid/media/AudioManager$OnAudioFocusChangeListener;
const/4 v3, 0x2
invoke-virtual {v0, v2, v1, v3}, Landroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;II)I
move-result v1
:cond_17
return v1
.end method
.method private setAudioDeviceInternal(Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;)V
.registers 7
.param p1, "device" # Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 528
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "setAudioDeviceInternal(device="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string 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, "AppRTCAudioManager"
invoke-static {v1, v0}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 529
const/4 v0, 0x0
.line 530
.local v0, "portType":I
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-interface {v2, p1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
invoke-static {v2}, Lorg/webrtc/utils/AppRTCUtils;->assertIsTrue(Z)V
.line 532
sget-object v2, Lorg/webrtc/audio/AppRTCAudioManager$5;->$SwitchMap$org$webrtc$audio$AppRTCAudioManager$AudioDevice:[I
invoke-virtual {p1}, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->ordinal()I
move-result v3
aget v2, v2, v3
const/4 v3, 0x1
if-eq v2, v3, :cond_4d
const/4 v3, 0x2
const/4 v4, 0x0
if-eq v2, v3, :cond_49
const/4 v3, 0x3
if-eq v2, v3, :cond_45
const/4 v3, 0x4
if-eq v2, v3, :cond_40
.line 547
const-string v2, "Invalid audio device selection"
invoke-static {v1, v2}, Lorg/webrtc/utils/AlivcLog;->e(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_51
.line 543
:cond_40
invoke-direct {p0, v4}, Lorg/webrtc/audio/AppRTCAudioManager;->setSpeakerphoneOn(Z)V
.line 544
const/4 v0, 0x1
.line 545
goto :goto_51
.line 540
:cond_45
invoke-direct {p0, v4}, Lorg/webrtc/audio/AppRTCAudioManager;->setSpeakerphoneOn(Z)V
.line 541
goto :goto_51
.line 537
:cond_49
invoke-direct {p0, v4}, Lorg/webrtc/audio/AppRTCAudioManager;->setSpeakerphoneOn(Z)V
.line 538
goto :goto_51
.line 534
:cond_4d
invoke-direct {p0, v3}, Lorg/webrtc/audio/AppRTCAudioManager;->setSpeakerphoneOn(Z)V
.line 535
nop
.line 550
:goto_51
iput-object p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 551
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "setAudioDeviceInternal: CurrentPort type: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 552
return-void
.end method
.method private setMicrophoneMute(Z)V
.registers 4
.param p1, "on" # Z
.line 712
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v0}, Landroid/media/AudioManager;->isMicrophoneMute()Z
move-result v0
.line 713
.local v0, "wasMuted":Z
if-ne v0, p1, :cond_9
.line 714
return-void
.line 716
:cond_9
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v1, p1}, Landroid/media/AudioManager;->setMicrophoneMute(Z)V
.line 717
return-void
.end method
.method private setSpeakerphoneOn(Z)V
.registers 10
.param p1, "on" # Z
.line 661
iput-boolean p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mSpeakerOnWhenRinging:Z
.line 663
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v0}, Landroid/media/AudioManager;->isSpeakerphoneOn()Z
move-result v0
.line 664
.local v0, "wasOn":Z
iget-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mFromBackground:Z
if-nez v1, :cond_f
if-ne v0, p1, :cond_f
.line 665
return-void
.line 669
:cond_f
iget-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mIsBasicMusicMode:Z
const/4 v2, 0x3
if-eqz v1, :cond_4d
.line 670
const/4 v1, 0x0
if-eqz p1, :cond_3c
.line 672
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v3, v1}, Landroid/media/AudioManager;->setMode(I)V
.line 675
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v3, v2}, Landroid/media/AudioManager;->getStreamMaxVolume(I)I
move-result v3
.line 676
.local v3, "maxVolume":I
int-to-double v4, v3
const-wide v6, 0x3fe6666666666666L # 0.7
invoke-static {v4, v5}, Ljava/lang/Double;->isNaN(D)Z
mul-double v4, v4, v6
double-to-int v4, v4
.line 677
.local v4, "protectVolume":I
iget-object v5, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v5, v2}, Landroid/media/AudioManager;->getStreamVolume(I)I
move-result v5
.line 678
.local v5, "currentVolume":I
if-lt v5, v4, :cond_3b
.line 681
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v6, v2, v4, v1}, Landroid/media/AudioManager;->setStreamVolume(III)V
.line 683
.end local v3 # "maxVolume":I
.end local v4 # "protectVolume":I
.end local v5 # "currentVolume":I
:cond_3b
goto :goto_62
.line 685
:cond_3c
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v3, v2}, Landroid/media/AudioManager;->setMode(I)V
.line 687
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v2, v1}, Landroid/media/AudioManager;->getStreamMaxVolume(I)I
move-result v2
.line 689
.local v2, "maxVolume":I
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v3, v1, v2, v1}, Landroid/media/AudioManager;->setStreamVolume(III)V
.line 690
.end local v2 # "maxVolume":I
goto :goto_62
.line 693
:cond_4d
invoke-static {}, Lorg/webrtc/utils/DeviceConstants;->shouldSetMode()Z
move-result v1
if-eqz v1, :cond_62
.line 694
if-eqz p1, :cond_5d
.line 695
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
sget v2, Lorg/webrtc/ali/voiceengine/WebRtcAudioManager;->sMode:I
invoke-virtual {v1, v2}, Landroid/media/AudioManager;->setMode(I)V
goto :goto_62
.line 697
:cond_5d
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v1, v2}, Landroid/media/AudioManager;->setMode(I)V
.line 703
:cond_62
:goto_62
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v1, p1}, Landroid/media/AudioManager;->setSpeakerphoneOn(Z)V
.line 704
return-void
.end method
.method private unregisterReceiver(Landroid/content/BroadcastReceiver;)V
.registers 3
.param p1, "receiver" # Landroid/content/BroadcastReceiver;
.line 625
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext: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;
.line 626
.local v0, "context":Landroid/content/Context;
if-eqz v0, :cond_d
.line 627
invoke-virtual {v0, p1}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
.line 629
:cond_d
return-void
.end method
# virtual methods
.method public getAudioDevices()Ljava/util/Set;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set<",
"Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;",
">;"
}
.end annotation
.line 599
invoke-static {}, Lorg/webrtc/ali/ThreadUtils;->checkIsOnMainThread()V
.line 600
new-instance v0, Ljava/util/HashSet;
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-direct {v0, v1}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V
invoke-static {v0}, Ljava/util/Collections;->unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;
move-result-object v0
return-object v0
.end method
.method public getSelectedAudioDevice()Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.registers 2
.line 607
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
return-object v0
.end method
.method public selectAudioDevice(Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;)V
.registers 4
.param p1, "device" # Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 585
invoke-static {}, Lorg/webrtc/ali/ThreadUtils;->checkIsOnMainThread()V
.line 586
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-interface {v0, p1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_2b
.line 587
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Can not select "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v1, " from available "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
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, "AppRTCAudioManager"
invoke-static {v1, v0}, Lorg/webrtc/utils/AlivcLog;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 589
:cond_2b
iput-object p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 590
invoke-virtual {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->updateAudioDeviceState()V
.line 591
return-void
.end method
.method public setBasicMusicMode(Z)V
.registers 2
.param p1, "basicMusicMode" # Z
.line 636
iput-boolean p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mIsBasicMusicMode:Z
.line 637
return-void
.end method
.method public setBasicMusicModeVolume()V
.registers 7
.line 640
iget-boolean v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mIsBasicMusicMode:Z
if-eqz v0, :cond_25
.line 643
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
const/4 v1, 0x3
invoke-virtual {v0, v1}, Landroid/media/AudioManager;->getStreamMaxVolume(I)I
move-result v0
.line 644
.local v0, "maxVolume":I
int-to-double v2, v0
const-wide v4, 0x3fe6666666666666L # 0.7
invoke-static {v2, v3}, Ljava/lang/Double;->isNaN(D)Z
mul-double v2, v2, v4
double-to-int v2, v2
.line 645
.local v2, "protectVolume":I
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v3, v1}, Landroid/media/AudioManager;->getStreamVolume(I)I
move-result v3
.line 646
.local v3, "currentVolume":I
if-lt v3, v2, :cond_25
.line 649
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
const/4 v5, 0x0
invoke-virtual {v4, v1, v2, v5}, Landroid/media/AudioManager;->setStreamVolume(III)V
.line 652
.end local v0 # "maxVolume":I
.end local v2 # "protectVolume":I
.end local v3 # "currentVolume":I
:cond_25
return-void
.end method
.method public setDefaultAudioDevice(Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;)V
.registers 5
.param p1, "defaultDevice" # Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 559
invoke-static {}, Lorg/webrtc/ali/ThreadUtils;->checkIsOnMainThread()V
.line 560
sget-object v0, Lorg/webrtc/audio/AppRTCAudioManager$5;->$SwitchMap$org$webrtc$audio$AppRTCAudioManager$AudioDevice:[I
invoke-virtual {p1}, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->ordinal()I
move-result v1
aget v0, v0, v1
const/4 v1, 0x1
const-string v2, "AppRTCAudioManager"
if-eq v0, v1, :cond_27
const/4 v1, 0x2
if-eq v0, v1, :cond_19
.line 572
const-string v0, "Invalid default audio device selection"
invoke-static {v2, v0}, Lorg/webrtc/utils/AlivcLog;->e(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_2a
.line 565
:cond_19
invoke-direct {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->hasEarpiece()Z
move-result v0
if-eqz v0, :cond_22
.line 566
iput-object p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
goto :goto_2a
.line 568
:cond_22
sget-object v0, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->SPEAKER_PHONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 570
goto :goto_2a
.line 562
:cond_27
iput-object p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 563
nop
.line 575
:goto_2a
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "setDefaultAudioDevice(device="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string 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
invoke-static {v2, v0}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 576
invoke-virtual {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->updateAudioDeviceState()V
.line 577
return-void
.end method
.method public start(Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;)V
.registers 8
.param p1, "audioManagerEvents" # Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;
.line 392
const-string v0, "AppRTCAudioManager"
const-string v1, "start"
invoke-static {v0, v1}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 393
invoke-static {}, Lorg/webrtc/ali/ThreadUtils;->checkIsOnMainThread()V
.line 394
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->amState:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
sget-object v2, Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;->RUNNING:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
if-ne v1, v2, :cond_16
.line 395
const-string v1, "AudioManager is already active"
invoke-static {v0, v1}, Lorg/webrtc/utils/AlivcLog;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 396
return-void
.line 401
:cond_16
const-string v1, "AudioManager starts..."
invoke-static {v0, v1}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 402
iput-object p1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManagerEvents:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;
.line 403
sget-object v1, Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;->RUNNING:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
iput-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->amState:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
.line 407
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v1}, Landroid/media/AudioManager;->getMode()I
move-result v1
iput v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedAudioMode:I
.line 408
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v1}, Landroid/media/AudioManager;->isSpeakerphoneOn()Z
move-result v1
iput-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedIsSpeakerPhoneOn:Z
.line 409
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
invoke-virtual {v1}, Landroid/media/AudioManager;->isMicrophoneMute()Z
move-result v1
iput-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedIsMicrophoneMute:Z
.line 410
invoke-direct {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset()Z
move-result v1
iput-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
.line 413
invoke-direct {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->requestAudioFocus()I
move-result v1
.line 414
.local v1, "result":I
const/4 v2, 0x1
if-ne v1, v2, :cond_4c
.line 416
const-string v3, "Audio focus request granted for VOICE_CALL streams"
invoke-static {v0, v3}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_51
.line 418
:cond_4c
const-string v3, "Audio focus request failed"
invoke-static {v0, v3}, Lorg/webrtc/utils/AlivcLog;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 427
:goto_51
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
const/4 v4, 0x3
invoke-virtual {v3, v4}, Landroid/media/AudioManager;->setMode(I)V
.line 431
const/4 v3, 0x0
invoke-direct {p0, v3}, Lorg/webrtc/audio/AppRTCAudioManager;->setMicrophoneMute(Z)V
.line 435
sget-object v4, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->NONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 436
sget-object v4, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->NONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 437
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-interface {v4}, Ljava/util/Set;->clear()V
.line 443
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v4}, Lorg/webrtc/audio/AppRTCBluetoothManager;->start()V
.line 452
invoke-virtual {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->updateAudioDeviceState()V
.line 457
iget-boolean v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mReceiverTag:Z
if-nez v4, :cond_82
.line 458
iput-boolean v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mReceiverTag:Z
.line 459
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->wiredHeadsetReceiver:Landroid/content/BroadcastReceiver;
new-instance v4, Landroid/content/IntentFilter;
const-string v5, "android.intent.action.HEADSET_PLUG"
invoke-direct {v4, v5}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
invoke-direct {p0, v2, v4}, Lorg/webrtc/audio/AppRTCAudioManager;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
.line 463
:cond_82
iput-boolean v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mAudioFocusLost:Z
.line 464
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
if-eqz v2, :cond_b1
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
if-eqz v2, :cond_b1
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object v2
instance-of v2, v2, Landroid/app/Application;
if-eqz v2, :cond_b1
.line 465
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object v2
check-cast v2, Landroid/app/Application;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mActivityCallbacks:Landroid/app/Application$ActivityLifecycleCallbacks;
invoke-virtual {v2, v3}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
.line 468
:cond_b1
invoke-static {}, Lorg/webrtc/utils/DeviceConstants;->shouldListenerPhoneState()Z
move-result v2
if-eqz v2, :cond_c0
.line 469
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->telephonyManager:Landroid/telephony/TelephonyManager;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mPhoneStateListener:Landroid/telephony/PhoneStateListener;
const/16 v4, 0x20
invoke-virtual {v2, v3, v4}, Landroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V
.line 472
:cond_c0
const-string v2, "AudioManager started"
invoke-static {v0, v2}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 473
return-void
.end method
.method public stop()V
.registers 5
.line 476
const-string v0, "AppRTCAudioManager"
const-string v1, "stop"
invoke-static {v0, v1}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 477
const/4 v1, 0x0
iput-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mAudioFocusLost:Z
.line 479
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
if-eqz v2, :cond_37
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
if-eqz v2, :cond_37
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object v2
instance-of v2, v2, Landroid/app/Application;
if-eqz v2, :cond_37
.line 480
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->apprtcContext:Ljava/lang/ref/WeakReference;
invoke-virtual {v2}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroid/content/Context;
invoke-virtual {v2}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object v2
check-cast v2, Landroid/app/Application;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mActivityCallbacks:Landroid/app/Application$ActivityLifecycleCallbacks;
invoke-virtual {v2, v3}, Landroid/app/Application;->unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
.line 483
:cond_37
invoke-static {}, Lorg/webrtc/ali/ThreadUtils;->checkIsOnMainThread()V
.line 484
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->amState:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
sget-object v3, Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;->RUNNING:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
if-eq v2, v3, :cond_57
.line 485
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Trying to stop AudioManager in incorrect state: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->amState:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lorg/webrtc/utils/AlivcLog;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 486
return-void
.line 488
:cond_57
sget-object v2, Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;->UNINITIALIZED:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->amState:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerState;
.line 489
iget-boolean v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mReceiverTag:Z
if-eqz v2, :cond_66
.line 490
iput-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mReceiverTag:Z
.line 491
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->wiredHeadsetReceiver:Landroid/content/BroadcastReceiver;
invoke-direct {p0, v2}, Lorg/webrtc/audio/AppRTCAudioManager;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
.line 495
:cond_66
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v2}, Lorg/webrtc/audio/AppRTCBluetoothManager;->stop()V
.line 499
iget-boolean v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedIsSpeakerPhoneOn:Z
invoke-direct {p0, v2}, Lorg/webrtc/audio/AppRTCAudioManager;->setSpeakerphoneOn(Z)V
.line 500
iget-boolean v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedIsMicrophoneMute:Z
invoke-direct {p0, v2}, Lorg/webrtc/audio/AppRTCAudioManager;->setMicrophoneMute(Z)V
.line 501
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
iget v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->savedAudioMode:I
invoke-virtual {v2, v3}, Landroid/media/AudioManager;->setMode(I)V
.line 505
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManager:Landroid/media/AudioManager;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioFocusChangeListener:Landroid/media/AudioManager$OnAudioFocusChangeListener;
invoke-virtual {v2, v3}, Landroid/media/AudioManager;->abandonAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;)I
.line 506
const/4 v2, 0x0
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioFocusChangeListener:Landroid/media/AudioManager$OnAudioFocusChangeListener;
.line 507
const-string v3, "Abandoned audio focus for VOICE_CALL streams"
invoke-static {v0, v3}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 509
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->proximitySensor:Lorg/webrtc/audio/AppRTCProximitySensor;
if-eqz v3, :cond_94
.line 510
invoke-virtual {v3}, Lorg/webrtc/audio/AppRTCProximitySensor;->stop()V
.line 511
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->proximitySensor:Lorg/webrtc/audio/AppRTCProximitySensor;
.line 514
:cond_94
iput-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManagerEvents:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;
.line 517
invoke-static {}, Lorg/webrtc/utils/DeviceConstants;->shouldListenerPhoneState()Z
move-result v2
if-eqz v2, :cond_a3
.line 518
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->telephonyManager:Landroid/telephony/TelephonyManager;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->mPhoneStateListener:Landroid/telephony/PhoneStateListener;
invoke-virtual {v2, v3, v1}, Landroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V
.line 520
:cond_a3
const-string v1, "AudioManager stopped"
invoke-static {v0, v1}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 521
return-void
.end method
.method public updateAudioDeviceState()V
.registers 2
.line 755
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lorg/webrtc/audio/AppRTCAudioManager;->updateAudioDeviceState(Z)V
.line 756
return-void
.end method
.method public updateAudioDeviceState(Z)V
.registers 12
.param p1, "audioFocusSetUpdated" # Z
.line 764
invoke-static {}, Lorg/webrtc/ali/ThreadUtils;->checkIsOnMainThread()V
.line 765
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "--- updateAudioDeviceState: wired headset="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-boolean v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
const-string v1, ", BT state="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v2, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 767
invoke-virtual {v2}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 765
const-string v2, "AppRTCAudioManager"
invoke-static {v2, v0}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 768
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Device status: available="
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v3, ", selected="
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v4, ", user selected="
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v2, v0}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 778
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v0}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v0
sget-object v4, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->HEADSET_AVAILABLE:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-eq v0, v4, :cond_71
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 779
invoke-virtual {v0}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v0
sget-object v4, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->HEADSET_UNAVAILABLE:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-eq v0, v4, :cond_71
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 780
invoke-virtual {v0}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v0
sget-object v4, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_DISCONNECTING:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-ne v0, v4, :cond_76
.line 781
:cond_71
iget-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v0}, Lorg/webrtc/audio/AppRTCBluetoothManager;->updateDevice()V
.line 786
:cond_76
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 788
.local v0, "newAudioDevices":Ljava/util/Set;, "Ljava/util/Set<Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;>;"
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v4}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v4
sget-object v5, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_CONNECTED:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-eq v4, v5, :cond_99
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 789
invoke-virtual {v4}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v4
sget-object v5, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_CONNECTING:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-eq v4, v5, :cond_99
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 790
invoke-virtual {v4}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v4
sget-object v5, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->HEADSET_AVAILABLE:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-ne v4, v5, :cond_9e
.line 791
:cond_99
sget-object v4, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->BLUETOOTH:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-interface {v0, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 794
:cond_9e
iget-boolean v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
if-eqz v4, :cond_a8
.line 797
sget-object v4, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->WIRED_HEADSET:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-interface {v0, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_b8
.line 803
:cond_a8
sget-object v4, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->SPEAKER_PHONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-interface {v0, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 804
invoke-direct {p0}, Lorg/webrtc/audio/AppRTCAudioManager;->hasEarpiece()Z
move-result v4
if-eqz v4, :cond_b8
.line 805
sget-object v4, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->EARPIECE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-interface {v0, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 810
:cond_b8
:goto_b8
iget-object v4, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-interface {v4, v0}, Ljava/util/Set;->equals(Ljava/lang/Object;)Z
move-result v4
const/4 v5, 0x1
xor-int/2addr v4, v5
.line 812
.local v4, "audioDeviceSetUpdated":Z
iput-object v0, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
.line 814
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v6}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v6
sget-object v7, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->HEADSET_UNAVAILABLE:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-ne v6, v7, :cond_d6
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
sget-object v7, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->BLUETOOTH:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-ne v6, v7, :cond_d6
.line 817
sget-object v6, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->NONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 819
:cond_d6
iget-boolean v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
if-eqz v6, :cond_e4
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
sget-object v7, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->SPEAKER_PHONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-ne v6, v7, :cond_e4
.line 824
sget-object v6, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->WIRED_HEADSET:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 826
:cond_e4
iget-boolean v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
if-nez v6, :cond_f2
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
sget-object v7, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->WIRED_HEADSET:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-ne v6, v7, :cond_f2
.line 831
sget-object v6, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->SPEAKER_PHONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iput-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 838
:cond_f2
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 839
invoke-virtual {v6}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v6
sget-object v7, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->HEADSET_AVAILABLE:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
const/4 v8, 0x0
if-ne v6, v7, :cond_10b
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
sget-object v7, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->NONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-eq v6, v7, :cond_109
iget-object v6, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
sget-object v7, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->BLUETOOTH:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-ne v6, v7, :cond_10b
:cond_109
const/4 v6, 0x1
goto :goto_10c
:cond_10b
const/4 v6, 0x0
.line 847
.local v6, "needBluetoothAudioStart":Z
:goto_10c
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 848
invoke-virtual {v7}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v7
sget-object v9, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_CONNECTED:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-eq v7, v9, :cond_120
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 849
invoke-virtual {v7}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v7
sget-object v9, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_CONNECTING:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-ne v7, v9, :cond_12d
:cond_120
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
sget-object v9, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->NONE:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-eq v7, v9, :cond_12d
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->userSelectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
sget-object v9, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->BLUETOOTH:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-eq v7, v9, :cond_12d
goto :goto_12e
:cond_12d
const/4 v5, 0x0
.line 853
.local v5, "needBluetoothAudioStop":Z
:goto_12e
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v7}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v7
sget-object v8, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->HEADSET_AVAILABLE:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-eq v7, v8, :cond_14c
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 854
invoke-virtual {v7}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v7
sget-object v8, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_CONNECTING:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-eq v7, v8, :cond_14c
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 855
invoke-virtual {v7}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v7
sget-object v8, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_CONNECTED:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-ne v7, v8, :cond_174
.line 856
:cond_14c
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const-string v8, "Need BT audio: start="
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
const-string v8, ", stop="
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
.line 858
invoke-virtual {v1}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v1
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 856
invoke-static {v2, v1}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 863
:cond_174
if-eqz v5, :cond_180
.line 864
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v1}, Lorg/webrtc/audio/AppRTCBluetoothManager;->stopScoAudio()V
.line 865
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v1}, Lorg/webrtc/audio/AppRTCBluetoothManager;->updateDevice()V
.line 868
:cond_180
if-eqz v6, :cond_194
if-nez v5, :cond_194
.line 870
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v1}, Lorg/webrtc/audio/AppRTCBluetoothManager;->startScoAudio()Z
move-result v1
if-nez v1, :cond_194
.line 872
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
sget-object v7, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->BLUETOOTH:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
invoke-interface {v1, v7}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 873
const/4 v4, 0x1
.line 878
:cond_194
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 880
.local v1, "newAudioDevice":Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->bluetoothManager:Lorg/webrtc/audio/AppRTCBluetoothManager;
invoke-virtual {v7}, Lorg/webrtc/audio/AppRTCBluetoothManager;->getState()Lorg/webrtc/audio/AppRTCBluetoothManager$State;
move-result-object v7
sget-object v8, Lorg/webrtc/audio/AppRTCBluetoothManager$State;->SCO_CONNECTED:Lorg/webrtc/audio/AppRTCBluetoothManager$State;
if-ne v7, v8, :cond_1a3
.line 884
sget-object v1, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->BLUETOOTH:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
goto :goto_1ac
.line 885
:cond_1a3
iget-boolean v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->hasWiredHeadset:Z
if-eqz v7, :cond_1aa
.line 888
sget-object v1, Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;->WIRED_HEADSET:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
goto :goto_1ac
.line 894
:cond_1aa
iget-object v1, p0, Lorg/webrtc/audio/AppRTCAudioManager;->defaultAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
.line 897
:goto_1ac
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
if-ne v1, v7, :cond_1b4
if-nez v4, :cond_1b4
if-eqz p1, :cond_1de
.line 899
:cond_1b4
invoke-direct {p0, v1}, Lorg/webrtc/audio/AppRTCAudioManager;->setAudioDeviceInternal(Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;)V
.line 900
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const-string v8, "New device status: available="
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v8, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v2, v3}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 903
iget-object v3, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioManagerEvents:Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;
if-eqz v3, :cond_1de
.line 905
iget-object v7, p0, Lorg/webrtc/audio/AppRTCAudioManager;->selectedAudioDevice:Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;
iget-object v8, p0, Lorg/webrtc/audio/AppRTCAudioManager;->audioDevices:Ljava/util/Set;
invoke-interface {v3, v7, v8}, Lorg/webrtc/audio/AppRTCAudioManager$AudioManagerEvents;->onAudioDeviceChanged(Lorg/webrtc/audio/AppRTCAudioManager$AudioDevice;Ljava/util/Set;)V
.line 908
:cond_1de
const-string v3, "--- updateAudioDeviceState done"
invoke-static {v2, v3}, Lorg/webrtc/utils/AlivcLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 909
return-void
.end method