RequirementsWatcher.smali
.class public final Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;
.super Ljava/lang/Object;
.source "RequirementsWatcher.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;,
Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$DeviceStatusChangeReceiver;,
Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;
}
.end annotation
# static fields
.field private static final TAG:Ljava/lang/String; = "RequirementsWatcher"
# instance fields
.field private final context:Landroid/content/Context;
.field private handler:Landroid/os/Handler;
.field private final listener:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;
.field private networkCallback:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
.field private notMetRequirements:I
.field private receiver:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$DeviceStatusChangeReceiver;
.field private final requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;Lcom/google/android/exoplayer2/scheduler/Requirements;)V
.registers 6
.param p1, "context" # Landroid/content/Context;
.param p2, "listener" # Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;
.param p3, "requirements" # Lcom/google/android/exoplayer2/scheduler/Requirements;
.line 82
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 83
iput-object p3, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
.line 84
iput-object p2, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->listener:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;
.line 85
invoke-virtual {p1}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->context:Landroid/content/Context;
.line 86
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v1, " created"
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 {v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->logd(Ljava/lang/String;)V
.line 87
return-void
.end method
.method static synthetic access$200(Ljava/lang/String;)V
.registers 1
.param p0, "x0" # Ljava/lang/String;
.line 38
invoke-static {p0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->logd(Ljava/lang/String;)V
return-void
.end method
.method static synthetic access$300(Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;)V
.registers 1
.param p0, "x0" # Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;
.line 38
invoke-direct {p0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->checkRequirements()V
return-void
.end method
.method static synthetic access$400(Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;)Landroid/os/Handler;
.registers 2
.param p0, "x0" # Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;
.line 38
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->handler:Landroid/os/Handler;
return-object v0
.end method
.method static synthetic access$500(Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;)Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
.registers 2
.param p0, "x0" # Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;
.line 38
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->networkCallback:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
return-object v0
.end method
.method private checkRequirements()V
.registers 4
.line 174
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->context:Landroid/content/Context;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/scheduler/Requirements;->getNotMetRequirements(Landroid/content/Context;)I
move-result v0
.line 175
.local v0, "notMetRequirements":I
iget v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->notMetRequirements:I
if-ne v1, v0, :cond_21
.line 176
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "notMetRequirements hasn\'t changed: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->logd(Ljava/lang/String;)V
.line 177
return-void
.line 179
:cond_21
iput v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->notMetRequirements:I
.line 180
if-nez v0, :cond_31
.line 181
const-string/jumbo v1, "start job"
invoke-static {v1}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->logd(Ljava/lang/String;)V
.line 182
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->listener:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;
invoke-interface {v1, p0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;->requirementsMet(Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;)V
goto :goto_3c
.line 184
:cond_31
const-string/jumbo v1, "stop job"
invoke-static {v1}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->logd(Ljava/lang/String;)V
.line 185
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->listener:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;
invoke-interface {v1, p0, v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$Listener;->requirementsNotMet(Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;I)V
.line 187
:goto_3c
return-void
.end method
.method private static logd(Ljava/lang/String;)V
.registers 1
.param p0, "message" # Ljava/lang/String;
.line 193
return-void
.end method
.method private registerNetworkCallbackV23()V
.registers 5
.line 153
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->context:Landroid/content/Context;
.line 154
const-string v1, "connectivity"
invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/net/ConnectivityManager;
.line 155
.local v0, "connectivityManager":Landroid/net/ConnectivityManager;
new-instance v1, Landroid/net/NetworkRequest$Builder;
invoke-direct {v1}, Landroid/net/NetworkRequest$Builder;-><init>()V
.line 157
const/16 v2, 0x10
invoke-virtual {v1, v2}, Landroid/net/NetworkRequest$Builder;->addCapability(I)Landroid/net/NetworkRequest$Builder;
move-result-object v1
.line 158
invoke-virtual {v1}, Landroid/net/NetworkRequest$Builder;->build()Landroid/net/NetworkRequest;
move-result-object v1
.line 159
.local v1, "request":Landroid/net/NetworkRequest;
new-instance v2, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
const/4 v3, 0x0
invoke-direct {v2, p0, v3}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;-><init>(Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$1;)V
iput-object v2, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->networkCallback:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
.line 160
invoke-virtual {v0, v1, v2}, Landroid/net/ConnectivityManager;->registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V
.line 161
return-void
.end method
.method private unregisterNetworkCallback()V
.registers 3
.line 164
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_18
.line 165
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->context:Landroid/content/Context;
.line 166
const-string v1, "connectivity"
invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/net/ConnectivityManager;
.line 167
.local v0, "connectivityManager":Landroid/net/ConnectivityManager;
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->networkCallback:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
invoke-virtual {v0, v1}, Landroid/net/ConnectivityManager;->unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V
.line 168
const/4 v1, 0x0
iput-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->networkCallback:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
.line 170
.end local v0 # "connectivityManager":Landroid/net/ConnectivityManager;
:cond_18
return-void
.end method
# virtual methods
.method public getRequirements()Lcom/google/android/exoplayer2/scheduler/Requirements;
.registers 2
.line 140
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
return-object v0
.end method
.method public start()I
.registers 6
.line 97
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 98
new-instance v0, Landroid/os/Handler;
invoke-direct {v0}, Landroid/os/Handler;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->handler:Landroid/os/Handler;
.line 100
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->context:Landroid/content/Context;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/scheduler/Requirements;->getNotMetRequirements(Landroid/content/Context;)I
move-result v0
iput v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->notMetRequirements:I
.line 102
new-instance v0, Landroid/content/IntentFilter;
invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V
.line 103
.local v0, "filter":Landroid/content/IntentFilter;
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/scheduler/Requirements;->getRequiredNetworkType()I
move-result v1
const/16 v2, 0x17
if-eqz v1, :cond_34
.line 104
sget v1, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
if-lt v1, v2, :cond_2f
.line 105
invoke-direct {p0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->registerNetworkCallbackV23()V
goto :goto_34
.line 107
:cond_2f
const-string v1, "android.net.conn.CONNECTIVITY_CHANGE"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 110
:cond_34
:goto_34
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/scheduler/Requirements;->isChargingRequired()Z
move-result v1
if-eqz v1, :cond_46
.line 111
const-string v1, "android.intent.action.ACTION_POWER_CONNECTED"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 112
const-string v1, "android.intent.action.ACTION_POWER_DISCONNECTED"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 114
:cond_46
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->requirements:Lcom/google/android/exoplayer2/scheduler/Requirements;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/scheduler/Requirements;->isIdleRequired()Z
move-result v1
if-eqz v1, :cond_62
.line 115
sget v1, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
if-lt v1, v2, :cond_58
.line 116
const-string v1, "android.os.action.DEVICE_IDLE_MODE_CHANGED"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
goto :goto_62
.line 118
:cond_58
const-string v1, "android.intent.action.SCREEN_ON"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 119
const-string v1, "android.intent.action.SCREEN_OFF"
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 122
:cond_62
:goto_62
new-instance v1, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$DeviceStatusChangeReceiver;
const/4 v2, 0x0
invoke-direct {v1, p0, v2}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$DeviceStatusChangeReceiver;-><init>(Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$1;)V
iput-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->receiver:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$DeviceStatusChangeReceiver;
.line 123
iget-object v3, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->context:Landroid/content/Context;
iget-object v4, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->handler:Landroid/os/Handler;
invoke-virtual {v3, v1, v0, v2, v4}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
.line 124
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v2, " started"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->logd(Ljava/lang/String;)V
.line 125
iget v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->notMetRequirements:I
return v1
.end method
.method public stop()V
.registers 3
.line 130
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->context:Landroid/content/Context;
iget-object v1, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->receiver:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$DeviceStatusChangeReceiver;
invoke-virtual {v0, v1}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
.line 131
const/4 v0, 0x0
iput-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->receiver:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$DeviceStatusChangeReceiver;
.line 132
iget-object v0, p0, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->networkCallback:Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher$CapabilityValidatedCallback;
if-eqz v0, :cond_11
.line 133
invoke-direct {p0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->unregisterNetworkCallback()V
.line 135
:cond_11
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
const-string v1, " stopped"
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 {v0}, Lcom/google/android/exoplayer2/scheduler/RequirementsWatcher;->logd(Ljava/lang/String;)V
.line 136
return-void
.end method
.method public toString()Ljava/lang/String;
.registers 2
.line 146
invoke-super {p0}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method