2026-07-06 19:54:44 +08:00

3462 lines
99 KiB
Smali

.class final Landroidx/camera/camera2/impl/Camera;
.super Ljava/lang/Object;
.source "Camera.java"
# interfaces
.implements Landroidx/camera/core/BaseCamera;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/camera/camera2/impl/Camera$AvailableCamerasObserver;,
Landroidx/camera/camera2/impl/Camera$StateCallback;,
Landroidx/camera/camera2/impl/Camera$InternalState;
}
.end annotation
# static fields
.field private static final ERROR_NONE:I = 0x0
.field private static final TAG:Ljava/lang/String; = "Camera"
# instance fields
.field private final mAttachedUseCaseLock:Ljava/lang/Object;
.field private final mAvailableCamerasObservable:Landroidx/camera/core/Observable;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/camera/core/Observable<",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field private final mAvailableCamerasObserver:Landroidx/camera/core/Observable$Observer;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/camera/core/Observable$Observer<",
"Ljava/lang/Integer;",
">;"
}
.end annotation
.end field
.field private final mCameraControlInternal:Landroidx/camera/camera2/impl/Camera2CameraControl;
.field private mCameraControlSessionConfig:Landroidx/camera/core/SessionConfig;
.field mCameraDevice:Landroid/hardware/camera2/CameraDevice;
.field mCameraDeviceError:I
.field private final mCameraId:Ljava/lang/String;
.field private mCameraInfo:Landroidx/camera/core/CameraInfo;
.field private final mCameraInfoLock:Ljava/lang/Object;
.field private final mCameraManager:Landroid/hardware/camera2/CameraManager;
.field private mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
.field private final mExecutor:Ljava/util/concurrent/Executor;
.field final mHandler:Landroid/os/Handler;
.field mNumAvailableCameras:I
.field private final mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/camera/core/impl/LiveDataObservable<",
"Landroidx/camera/core/BaseCamera$State;",
">;"
}
.end annotation
.end field
.field private final mPendingForAddOnline:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Landroidx/camera/core/UseCase;",
">;"
}
.end annotation
.end field
.field private final mPendingLock:Ljava/lang/Object;
.field final mReleaseRequestCount:Ljava/util/concurrent/atomic/AtomicInteger;
.field final mReleasedCaptureSessions:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Landroidx/camera/camera2/impl/CaptureSession;",
"Lcom/google/common/util/concurrent/ListenableFuture<",
"Ljava/lang/Void;",
">;>;"
}
.end annotation
.end field
.field volatile mState:Landroidx/camera/camera2/impl/Camera$InternalState;
.field private final mStateCallback:Landroidx/camera/camera2/impl/Camera$StateCallback;
.field private final mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
.field mUserReleaseFuture:Lcom/google/common/util/concurrent/ListenableFuture;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/util/concurrent/ListenableFuture<",
"Ljava/lang/Void;",
">;"
}
.end annotation
.end field
.field mUserReleaseNotifier:Landroidx/concurrent/futures/CallbackToFutureAdapter$Completer;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/concurrent/futures/CallbackToFutureAdapter$Completer<",
"Ljava/lang/Void;",
">;"
}
.end annotation
.end field
# direct methods
.method constructor <init>(Landroid/hardware/camera2/CameraManager;Ljava/lang/String;Landroidx/camera/core/Observable;Landroid/os/Handler;)V
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/hardware/camera2/CameraManager;",
"Ljava/lang/String;",
"Landroidx/camera/core/Observable<",
"Ljava/lang/Integer;",
">;",
"Landroid/os/Handler;",
")V"
}
.end annotation
.line 174
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 88
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
.line 100
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraInfoLock:Ljava/lang/Object;
.line 113
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->INITIALIZED:Landroidx/camera/camera2/impl/Camera$InternalState;
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
.line 115
new-instance v0, Landroidx/camera/core/impl/LiveDataObservable;
invoke-direct {v0}, Landroidx/camera/core/impl/LiveDataObservable;-><init>()V
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
.line 119
new-instance v1, Landroidx/camera/camera2/impl/Camera$StateCallback;
invoke-direct {v1, p0}, Landroidx/camera/camera2/impl/Camera$StateCallback;-><init>(Landroidx/camera/camera2/impl/Camera;)V
iput-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mStateCallback:Landroidx/camera/camera2/impl/Camera$StateCallback;
const/4 v1, 0x0
.line 129
iput v1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDeviceError:I
.line 134
invoke-static {}, Landroidx/camera/core/SessionConfig;->defaultEmptySessionConfig()Landroidx/camera/core/SessionConfig;
move-result-object v2
iput-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraControlSessionConfig:Landroidx/camera/core/SessionConfig;
.line 136
new-instance v2, Ljava/lang/Object;
invoke-direct {v2}, Ljava/lang/Object;-><init>()V
iput-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mPendingLock:Ljava/lang/Object;
.line 137
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
iput-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mPendingForAddOnline:Ljava/util/List;
.line 141
new-instance v2, Ljava/util/concurrent/atomic/AtomicInteger;
invoke-direct {v2, v1}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
iput-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mReleaseRequestCount:Ljava/util/concurrent/atomic/AtomicInteger;
.line 148
new-instance v2, Ljava/util/HashMap;
invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
iput-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mReleasedCaptureSessions:Ljava/util/Map;
.line 161
iput v1, p0, Landroidx/camera/camera2/impl/Camera;->mNumAvailableCameras:I
.line 175
iput-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraManager:Landroid/hardware/camera2/CameraManager;
.line 176
iput-object p2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
.line 177
new-instance v1, Landroidx/camera/camera2/impl/Camera$AvailableCamerasObserver;
invoke-direct {v1, p0}, Landroidx/camera/camera2/impl/Camera$AvailableCamerasObserver;-><init>(Landroidx/camera/camera2/impl/Camera;)V
iput-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mAvailableCamerasObserver:Landroidx/camera/core/Observable$Observer;
.line 178
iput-object p3, p0, Landroidx/camera/camera2/impl/Camera;->mAvailableCamerasObservable:Landroidx/camera/core/Observable;
.line 179
iput-object p4, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
.line 180
invoke-static {p4}, Landroidx/camera/core/impl/utils/executor/CameraXExecutors;->newHandlerExecutor(Landroid/os/Handler;)Ljava/util/concurrent/ScheduledExecutorService;
move-result-object p4
.line 181
iput-object p4, p0, Landroidx/camera/camera2/impl/Camera;->mExecutor:Ljava/util/concurrent/Executor;
.line 182
new-instance v2, Landroidx/camera/core/UseCaseAttachState;
invoke-direct {v2, p2}, Landroidx/camera/core/UseCaseAttachState;-><init>(Ljava/lang/String;)V
iput-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
.line 183
sget-object v2, Landroidx/camera/core/BaseCamera$State;->CLOSED:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {v0, v2}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
.line 187
:try_start_0
invoke-virtual {p1, p2}, Landroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
move-result-object p1
.line 188
new-instance p2, Landroidx/camera/camera2/impl/Camera2CameraControl;
invoke-direct {p2, p1, p0, p4, p4}, Landroidx/camera/camera2/impl/Camera2CameraControl;-><init>(Landroid/hardware/camera2/CameraCharacteristics;Landroidx/camera/core/CameraControlInternal$ControlUpdateListener;Ljava/util/concurrent/ScheduledExecutorService;Ljava/util/concurrent/Executor;)V
iput-object p2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraControlInternal:Landroidx/camera/camera2/impl/Camera2CameraControl;
:try_end_0
.catch Landroid/hardware/camera2/CameraAccessException; {:try_start_0 .. :try_end_0} :catch_0
.line 194
new-instance p1, Landroidx/camera/camera2/impl/CaptureSession;
invoke-direct {p1, p4}, Landroidx/camera/camera2/impl/CaptureSession;-><init>(Ljava/util/concurrent/Executor;)V
iput-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
.line 197
invoke-interface {p3, p4, v1}, Landroidx/camera/core/Observable;->addObserver(Ljava/util/concurrent/Executor;Landroidx/camera/core/Observable$Observer;)V
return-void
:catch_0
move-exception p1
.line 191
new-instance p2, Ljava/lang/IllegalStateException;
const-string p3, "Cannot access camera"
invoke-direct {p2, p3, p1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw p2
.end method
.method private checkAndAttachRepeatingSurface(Landroidx/camera/core/CaptureConfig$Builder;)Z
.locals 4
.line 925
invoke-virtual {p1}, Landroidx/camera/core/CaptureConfig$Builder;->getSurfaces()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->isEmpty()Z
move-result v0
const/4 v1, 0x0
if-nez v0, :cond_0
const-string p1, "Camera"
const-string v0, "The capture config builder already has surface inside."
.line 926
invoke-static {p1, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
return v1
.line 931
:cond_0
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 932
:try_start_0
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v2}, Landroidx/camera/core/UseCaseAttachState;->getActiveAndOnlineUseCases()Ljava/util/Collection;
move-result-object v2
.line 933
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 935
invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v0
:cond_1
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_2
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/camera/core/UseCase;
.line 936
iget-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v2, v3}, Landroidx/camera/core/UseCase;->getSessionConfig(Ljava/lang/String;)Landroidx/camera/core/SessionConfig;
move-result-object v2
.line 939
invoke-virtual {v2}, Landroidx/camera/core/SessionConfig;->getRepeatingCaptureConfig()Landroidx/camera/core/CaptureConfig;
move-result-object v2
invoke-virtual {v2}, Landroidx/camera/core/CaptureConfig;->getSurfaces()Ljava/util/List;
move-result-object v2
.line 940
invoke-interface {v2}, Ljava/util/List;->isEmpty()Z
move-result v3
if-nez v3, :cond_1
.line 941
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_0
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_1
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Landroidx/camera/core/DeferrableSurface;
.line 942
invoke-virtual {p1, v3}, Landroidx/camera/core/CaptureConfig$Builder;->addSurface(Landroidx/camera/core/DeferrableSurface;)V
goto :goto_0
.line 947
:cond_2
invoke-virtual {p1}, Landroidx/camera/core/CaptureConfig$Builder;->getSurfaces()Ljava/util/Set;
move-result-object p1
invoke-interface {p1}, Ljava/util/Set;->isEmpty()Z
move-result p1
if-eqz p1, :cond_3
const-string p1, "Camera"
const-string v0, "Unable to find a repeating surface to attach to CaptureConfig"
.line 948
invoke-static {p1, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
return v1
:cond_3
const/4 p1, 0x1
return p1
:catchall_0
move-exception p1
.line 933
:try_start_1
monitor-exit v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw p1
.end method
.method private clearCameraControlPreviewAspectRatio(Ljava/util/Collection;)V
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection<",
"Landroidx/camera/core/UseCase;",
">;)V"
}
.end annotation
.line 741
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object p1
:cond_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/camera/core/UseCase;
.line 742
instance-of v0, v0, Landroidx/camera/core/Preview;
if-eqz v0, :cond_0
.line 743
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraControlInternal:Landroidx/camera/camera2/impl/Camera2CameraControl;
const/4 v0, 0x0
invoke-virtual {p1, v0}, Landroidx/camera/camera2/impl/Camera2CameraControl;->setPreviewAspectRatio(Landroid/util/Rational;)V
:cond_1
return-void
.end method
.method private configAndClose()V
.locals 7
const-string v0, "Camera"
.line 284
new-instance v1, Landroidx/camera/camera2/impl/CaptureSession;
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mExecutor:Ljava/util/concurrent/Executor;
invoke-direct {v1, v2}, Landroidx/camera/camera2/impl/CaptureSession;-><init>(Ljava/util/concurrent/Executor;)V
.line 286
new-instance v2, Landroid/graphics/SurfaceTexture;
const/4 v3, 0x0
invoke-direct {v2, v3}, Landroid/graphics/SurfaceTexture;-><init>(I)V
const/16 v4, 0x280
const/16 v5, 0x1e0
.line 287
invoke-virtual {v2, v4, v5}, Landroid/graphics/SurfaceTexture;->setDefaultBufferSize(II)V
.line 288
new-instance v4, Landroid/view/Surface;
invoke-direct {v4, v2}, Landroid/view/Surface;-><init>(Landroid/graphics/SurfaceTexture;)V
.line 289
new-instance v5, Landroidx/camera/camera2/impl/Camera$3;
invoke-direct {v5, p0, v4, v2}, Landroidx/camera/camera2/impl/Camera$3;-><init>(Landroidx/camera/camera2/impl/Camera;Landroid/view/Surface;Landroid/graphics/SurfaceTexture;)V
.line 297
new-instance v2, Landroidx/camera/core/SessionConfig$Builder;
invoke-direct {v2}, Landroidx/camera/core/SessionConfig$Builder;-><init>()V
.line 298
new-instance v6, Landroidx/camera/core/ImmediateSurface;
invoke-direct {v6, v4}, Landroidx/camera/core/ImmediateSurface;-><init>(Landroid/view/Surface;)V
invoke-virtual {v2, v6}, Landroidx/camera/core/SessionConfig$Builder;->addNonRepeatingSurface(Landroidx/camera/core/DeferrableSurface;)V
const/4 v4, 0x1
.line 299
invoke-virtual {v2, v4}, Landroidx/camera/core/SessionConfig$Builder;->setTemplateType(I)V
:try_start_0
const-string v4, "Start configAndClose."
.line 301
invoke-static {v0, v4}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 302
invoke-virtual {v2}, Landroidx/camera/core/SessionConfig$Builder;->build()Landroidx/camera/core/SessionConfig;
move-result-object v2
iget-object v4, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDevice:Landroid/hardware/camera2/CameraDevice;
invoke-virtual {v1, v2, v4}, Landroidx/camera/camera2/impl/CaptureSession;->open(Landroidx/camera/core/SessionConfig;Landroid/hardware/camera2/CameraDevice;)V
.line 305
invoke-direct {p0, v1, v3}, Landroidx/camera/camera2/impl/Camera;->releaseSession(Landroidx/camera/camera2/impl/CaptureSession;Z)Lcom/google/common/util/concurrent/ListenableFuture;
move-result-object v1
.line 310
invoke-static {}, Landroidx/camera/core/impl/utils/executor/CameraXExecutors;->directExecutor()Ljava/util/concurrent/Executor;
move-result-object v2
.line 309
invoke-interface {v1, v5, v2}, Lcom/google/common/util/concurrent/ListenableFuture;->addListener(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
:try_end_0
.catch Landroid/hardware/camera2/CameraAccessException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception v1
.line 313
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Unable to configure camera "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
iget-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " due to "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
.line 314
invoke-virtual {v1}, Landroid/hardware/camera2/CameraAccessException;->getMessage()Ljava/lang/String;
move-result-object v1
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 313
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 315
invoke-interface {v5}, Ljava/lang/Runnable;->run()V
:goto_0
return-void
.end method
.method private createDeviceStateCallback()Landroid/hardware/camera2/CameraDevice$StateCallback;
.locals 3
.line 905
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 906
:try_start_0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1}, Landroidx/camera/core/UseCaseAttachState;->getOnlineBuilder()Landroidx/camera/core/SessionConfig$ValidatingBuilder;
move-result-object v1
invoke-virtual {v1}, Landroidx/camera/core/SessionConfig$ValidatingBuilder;->build()Landroidx/camera/core/SessionConfig;
move-result-object v1
.line 909
invoke-virtual {v1}, Landroidx/camera/core/SessionConfig;->getDeviceStateCallbacks()Ljava/util/List;
move-result-object v1
.line 910
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2, v1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 912
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mStateCallback:Landroidx/camera/camera2/impl/Camera$StateCallback;
invoke-interface {v2, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 913
invoke-static {v2}, Landroidx/camera/core/CameraDeviceStateCallbacks;->createComboCallback(Ljava/util/List;)Landroid/hardware/camera2/CameraDevice$StateCallback;
move-result-object v1
monitor-exit v0
return-object v1
:catchall_0
move-exception v1
.line 914
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw v1
.end method
.method private notifyAttachToUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
.locals 1
.line 649
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {p1, v0}, Landroidx/camera/core/UseCase;->getSessionConfig(Ljava/lang/String;)Landroidx/camera/core/SessionConfig;
move-result-object p1
.line 650
invoke-virtual {p1}, Landroidx/camera/core/SessionConfig;->getSurfaces()Ljava/util/List;
move-result-object p1
.line 649
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_0
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/camera/core/DeferrableSurface;
.line 651
invoke-virtual {v0}, Landroidx/camera/core/DeferrableSurface;->notifySurfaceAttached()V
goto :goto_0
:cond_0
return-void
.end method
.method private notifyDetachFromUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
.locals 1
.line 656
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {p1, v0}, Landroidx/camera/core/UseCase;->getSessionConfig(Ljava/lang/String;)Landroidx/camera/core/SessionConfig;
move-result-object p1
.line 657
invoke-virtual {p1}, Landroidx/camera/core/SessionConfig;->getSurfaces()Ljava/util/List;
move-result-object p1
.line 656
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_0
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/camera/core/DeferrableSurface;
.line 658
invoke-virtual {v0}, Landroidx/camera/core/DeferrableSurface;->notifySurfaceDetached()V
goto :goto_0
:cond_0
return-void
.end method
.method private reattachUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
.locals 4
.line 624
invoke-virtual {p0, p1}, Landroidx/camera/camera2/impl/Camera;->isUseCaseOnline(Landroidx/camera/core/UseCase;)Z
move-result v0
if-nez v0, :cond_0
return-void
.line 627
:cond_0
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v0, p1}, Landroidx/camera/core/UseCaseAttachState;->getUseCaseSessionConfig(Landroidx/camera/core/UseCase;)Landroidx/camera/core/SessionConfig;
move-result-object v0
.line 628
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {p1, v1}, Landroidx/camera/core/UseCase;->getSessionConfig(Ljava/lang/String;)Landroidx/camera/core/SessionConfig;
move-result-object p1
.line 630
invoke-virtual {v0}, Landroidx/camera/core/SessionConfig;->getSurfaces()Ljava/util/List;
move-result-object v0
.line 631
invoke-virtual {p1}, Landroidx/camera/core/SessionConfig;->getSurfaces()Ljava/util/List;
move-result-object p1
.line 634
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_1
:goto_0
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_2
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/camera/core/DeferrableSurface;
.line 635
invoke-interface {v0, v2}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_1
.line 636
invoke-virtual {v2}, Landroidx/camera/core/DeferrableSurface;->notifySurfaceAttached()V
goto :goto_0
.line 641
:cond_2
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
:cond_3
:goto_1
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_4
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroidx/camera/core/DeferrableSurface;
.line 642
invoke-interface {p1, v1}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_3
.line 643
invoke-virtual {v1}, Landroidx/camera/core/DeferrableSurface;->notifySurfaceDetached()V
goto :goto_1
:cond_4
return-void
.end method
.method private releaseSession(Landroidx/camera/camera2/impl/CaptureSession;Z)Lcom/google/common/util/concurrent/ListenableFuture;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroidx/camera/camera2/impl/CaptureSession;",
"Z)",
"Lcom/google/common/util/concurrent/ListenableFuture<",
"Ljava/lang/Void;",
">;"
}
.end annotation
.line 387
invoke-virtual {p1}, Landroidx/camera/camera2/impl/CaptureSession;->close()V
.line 388
invoke-virtual {p1, p2}, Landroidx/camera/camera2/impl/CaptureSession;->release(Z)Lcom/google/common/util/concurrent/ListenableFuture;
move-result-object p2
.line 390
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mReleasedCaptureSessions:Ljava/util/Map;
invoke-interface {v0, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 394
new-instance v0, Landroidx/camera/camera2/impl/Camera$4;
invoke-direct {v0, p0, p1}, Landroidx/camera/camera2/impl/Camera$4;-><init>(Landroidx/camera/camera2/impl/Camera;Landroidx/camera/camera2/impl/CaptureSession;)V
.line 424
invoke-static {}, Landroidx/camera/core/impl/utils/executor/CameraXExecutors;->directExecutor()Ljava/util/concurrent/Executor;
move-result-object p1
.line 394
invoke-static {p2, v0, p1}, Landroidx/camera/core/impl/utils/futures/Futures;->addCallback(Lcom/google/common/util/concurrent/ListenableFuture;Landroidx/camera/core/impl/utils/futures/FutureCallback;Ljava/util/concurrent/Executor;)V
return-object p2
.end method
.method private resetCaptureSession(Z)V
.locals 5
.line 891
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
if-eqz v0, :cond_0
const/4 v0, 0x1
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
invoke-static {v0}, Landroidx/core/util/Preconditions;->checkState(Z)V
const-string v0, "Camera"
const-string v1, "Resetting Capture Session"
.line 892
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 893
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
.line 895
invoke-virtual {v0}, Landroidx/camera/camera2/impl/CaptureSession;->getSessionConfig()Landroidx/camera/core/SessionConfig;
move-result-object v1
.line 896
invoke-virtual {v0}, Landroidx/camera/camera2/impl/CaptureSession;->getCaptureConfigs()Ljava/util/List;
move-result-object v2
.line 897
new-instance v3, Landroidx/camera/camera2/impl/CaptureSession;
iget-object v4, p0, Landroidx/camera/camera2/impl/Camera;->mExecutor:Ljava/util/concurrent/Executor;
invoke-direct {v3, v4}, Landroidx/camera/camera2/impl/CaptureSession;-><init>(Ljava/util/concurrent/Executor;)V
iput-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
.line 898
invoke-virtual {v3, v1}, Landroidx/camera/camera2/impl/CaptureSession;->setSessionConfig(Landroidx/camera/core/SessionConfig;)V
.line 899
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
invoke-virtual {v1, v2}, Landroidx/camera/camera2/impl/CaptureSession;->issueCaptureRequests(Ljava/util/List;)V
.line 901
invoke-direct {p0, v0, p1}, Landroidx/camera/camera2/impl/Camera;->releaseSession(Landroidx/camera/camera2/impl/CaptureSession;Z)Lcom/google/common/util/concurrent/ListenableFuture;
return-void
.end method
.method private updateCameraControlPreviewAspectRatio(Ljava/util/Collection;)V
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection<",
"Landroidx/camera/core/UseCase;",
">;)V"
}
.end annotation
.line 730
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object p1
:cond_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/camera/core/UseCase;
.line 731
instance-of v1, v0, Landroidx/camera/core/Preview;
if-eqz v1, :cond_0
.line 732
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v0, p1}, Landroidx/camera/core/UseCase;->getAttachedSurfaceResolution(Ljava/lang/String;)Landroid/util/Size;
move-result-object p1
.line 733
new-instance v0, Landroid/util/Rational;
invoke-virtual {p1}, Landroid/util/Size;->getWidth()I
move-result v1
invoke-virtual {p1}, Landroid/util/Size;->getHeight()I
move-result p1
invoke-direct {v0, v1, p1}, Landroid/util/Rational;-><init>(II)V
.line 734
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraControlInternal:Landroidx/camera/camera2/impl/Camera2CameraControl;
invoke-virtual {p1, v0}, Landroidx/camera/camera2/impl/Camera2CameraControl;->setPreviewAspectRatio(Landroid/util/Rational;)V
:cond_1
return-void
.end method
.method private updateCaptureSessionConfig()V
.locals 2
.line 843
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 844
:try_start_0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1}, Landroidx/camera/core/UseCaseAttachState;->getActiveAndOnlineBuilder()Landroidx/camera/core/SessionConfig$ValidatingBuilder;
move-result-object v1
.line 845
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 847
invoke-virtual {v1}, Landroidx/camera/core/SessionConfig$ValidatingBuilder;->isValid()Z
move-result v0
if-eqz v0, :cond_0
.line 850
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraControlSessionConfig:Landroidx/camera/core/SessionConfig;
invoke-virtual {v1, v0}, Landroidx/camera/core/SessionConfig$ValidatingBuilder;->add(Landroidx/camera/core/SessionConfig;)V
.line 852
invoke-virtual {v1}, Landroidx/camera/core/SessionConfig$ValidatingBuilder;->build()Landroidx/camera/core/SessionConfig;
move-result-object v0
.line 853
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
invoke-virtual {v1, v0}, Landroidx/camera/camera2/impl/CaptureSession;->setSessionConfig(Landroidx/camera/core/SessionConfig;)V
:cond_0
return-void
:catchall_0
move-exception v1
.line 845
:try_start_1
monitor-exit v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw v1
.end method
# virtual methods
.method public addOnlineUseCase(Ljava/util/Collection;)V
.locals 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection<",
"Landroidx/camera/core/UseCase;",
">;)V"
}
.end annotation
.line 674
invoke-interface {p1}, Ljava/util/Collection;->isEmpty()Z
move-result v0
if-eqz v0, :cond_0
return-void
.line 683
:cond_0
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mPendingLock:Ljava/lang/Object;
monitor-enter v0
.line 684
:try_start_0
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_1
:goto_0
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_3
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/camera/core/UseCase;
.line 685
invoke-virtual {p0, v2}, Landroidx/camera/camera2/impl/Camera;->isUseCaseOnline(Landroidx/camera/core/UseCase;)Z
move-result v3
.line 686
iget-object v4, p0, Landroidx/camera/camera2/impl/Camera;->mPendingForAddOnline:Ljava/util/List;
invoke-interface {v4, v2}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_1
if-eqz v3, :cond_2
goto :goto_0
.line 690
:cond_2
invoke-direct {p0, v2}, Landroidx/camera/camera2/impl/Camera;->notifyAttachToUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
.line 691
iget-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mPendingForAddOnline:Ljava/util/List;
invoke-interface {v3, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_0
.line 693
:cond_3
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_2
.line 695
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_4
.line 696
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$12;
invoke-direct {v1, p0, p1}, Landroidx/camera/camera2/impl/Camera$12;-><init>(Landroidx/camera/camera2/impl/Camera;Ljava/util/Collection;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
:cond_4
const-string v0, "Camera"
.line 705
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Use cases "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " ONLINE for camera "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 706
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v1
.line 707
:try_start_1
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_1
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_5
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/camera/core/UseCase;
.line 708
iget-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v3, v2}, Landroidx/camera/core/UseCaseAttachState;->setUseCaseOnline(Landroidx/camera/core/UseCase;)V
goto :goto_1
.line 710
:cond_5
monitor-exit v1
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_1
.line 712
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mPendingLock:Ljava/lang/Object;
monitor-enter v0
.line 713
:try_start_2
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mPendingForAddOnline:Ljava/util/List;
invoke-interface {v1, p1}, Ljava/util/List;->removeAll(Ljava/util/Collection;)Z
.line 714
monitor-exit v0
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
.line 716
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->updateCaptureSessionConfig()V
const/4 v0, 0x0
.line 717
invoke-direct {p0, v0}, Landroidx/camera/camera2/impl/Camera;->resetCaptureSession(Z)V
.line 719
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->OPENED:Landroidx/camera/camera2/impl/Camera$InternalState;
if-ne v0, v1, :cond_6
.line 720
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->openCaptureSession()V
goto :goto_2
.line 722
:cond_6
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->open()V
.line 725
:goto_2
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->updateCameraControlPreviewAspectRatio(Ljava/util/Collection;)V
return-void
:catchall_0
move-exception p1
.line 714
:try_start_3
monitor-exit v0
:try_end_3
.catchall {:try_start_3 .. :try_end_3} :catchall_0
throw p1
:catchall_1
move-exception p1
.line 710
:try_start_4
monitor-exit v1
:try_end_4
.catchall {:try_start_4 .. :try_end_4} :catchall_1
throw p1
:catchall_2
move-exception p1
.line 693
:try_start_5
monitor-exit v0
:try_end_5
.catchall {:try_start_5 .. :try_end_5} :catchall_2
throw p1
.end method
.method public close()V
.locals 4
.line 250
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_0
.line 251
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$2;
invoke-direct {v1, p0}, Landroidx/camera/camera2/impl/Camera$2;-><init>(Landroidx/camera/camera2/impl/Camera;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
.line 260
:cond_0
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Closing camera: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "Camera"
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 261
sget-object v0, Landroidx/camera/camera2/impl/Camera$15;->$SwitchMap$androidx$camera$camera2$impl$Camera$InternalState:[I
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {v2}, Landroidx/camera/camera2/impl/Camera$InternalState;->ordinal()I
move-result v2
aget v0, v0, v2
const/4 v2, 0x3
const/4 v3, 0x0
if-eq v0, v2, :cond_4
const/4 v2, 0x4
if-eq v0, v2, :cond_3
const/4 v2, 0x5
if-eq v0, v2, :cond_3
const/4 v2, 0x6
if-eq v0, v2, :cond_1
goto :goto_0
.line 273
:cond_1
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDevice:Landroid/hardware/camera2/CameraDevice;
if-nez v0, :cond_2
const/4 v3, 0x1
:cond_2
invoke-static {v3}, Landroidx/core/util/Preconditions;->checkState(Z)V
.line 274
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->INITIALIZED:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 276
:goto_0
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "close() ignored due to being in state: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_1
.line 268
:cond_3
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->CLOSING:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
goto :goto_1
.line 263
:cond_4
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->CLOSING:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 264
invoke-virtual {p0, v3}, Landroidx/camera/camera2/impl/Camera;->closeCamera(Z)V
:goto_1
return-void
.end method
.method closeCamera(Z)V
.locals 5
.line 352
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->CLOSING:Landroidx/camera/camera2/impl/Camera$InternalState;
const/4 v2, 0x1
const/4 v3, 0x0
if-eq v0, v1, :cond_1
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->RELEASING:Landroidx/camera/camera2/impl/Camera$InternalState;
if-eq v0, v1, :cond_1
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->REOPENING:Landroidx/camera/camera2/impl/Camera$InternalState;
if-ne v0, v1, :cond_0
iget v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDeviceError:I
if-eqz v0, :cond_0
goto :goto_0
:cond_0
move v0, v3
goto :goto_1
:cond_1
:goto_0
move v0, v2
:goto_1
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "closeCamera should only be called in a CLOSING, RELEASING or REOPENING (with error) state. Current state: "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v4, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v4, " (error: "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget v4, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDeviceError:I
.line 357
invoke-virtual {p0, v4}, Landroidx/camera/camera2/impl/Camera;->getErrorMessage(I)Ljava/lang/String;
move-result-object v4
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v4, ")"
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 352
invoke-static {v0, v1}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V
.line 361
:try_start_0
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->getCameraInfo()Landroidx/camera/core/CameraInfo;
move-result-object v0
check-cast v0, Landroidx/camera/camera2/impl/Camera2CameraInfo;
.line 362
invoke-virtual {v0}, Landroidx/camera/camera2/impl/Camera2CameraInfo;->getSupportedHardwareLevel()I
move-result v0
:try_end_0
.catch Landroidx/camera/core/CameraInfoUnavailableException; {:try_start_0 .. :try_end_0} :catch_0
const/4 v1, 0x2
if-ne v0, v1, :cond_2
goto :goto_2
:cond_2
move v2, v3
:goto_2
move v3, v2
goto :goto_3
:catch_0
move-exception v0
const-string v1, "Camera"
const-string v2, "Check legacy device failed."
.line 365
invoke-static {v1, v2, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
.line 370
:goto_3
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x17
if-le v0, v1, :cond_3
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x1d
if-ge v0, v1, :cond_3
if-eqz v3, :cond_3
iget v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDeviceError:I
if-nez v0, :cond_3
.line 376
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->configAndClose()V
.line 381
:cond_3
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->resetCaptureSession(Z)V
return-void
.end method
.method finishClose()V
.locals 3
.line 328
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->RELEASING:Landroidx/camera/camera2/impl/Camera$InternalState;
if-eq v0, v1, :cond_1
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->CLOSING:Landroidx/camera/camera2/impl/Camera$InternalState;
if-ne v0, v1, :cond_0
goto :goto_0
:cond_0
const/4 v0, 0x0
goto :goto_1
:cond_1
:goto_0
const/4 v0, 0x1
:goto_1
invoke-static {v0}, Landroidx/core/util/Preconditions;->checkState(Z)V
.line 330
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mReleasedCaptureSessions:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->isEmpty()Z
move-result v0
invoke-static {v0}, Landroidx/core/util/Preconditions;->checkState(Z)V
const/4 v0, 0x0
.line 332
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDevice:Landroid/hardware/camera2/CameraDevice;
.line 333
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v2, Landroidx/camera/camera2/impl/Camera$InternalState;->CLOSING:Landroidx/camera/camera2/impl/Camera$InternalState;
if-ne v1, v2, :cond_2
.line 334
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->INITIALIZED:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
goto :goto_2
.line 336
:cond_2
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->RELEASED:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v1}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 340
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mAvailableCamerasObservable:Landroidx/camera/core/Observable;
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mAvailableCamerasObserver:Landroidx/camera/core/Observable$Observer;
invoke-interface {v1, v2}, Landroidx/camera/core/Observable;->removeObserver(Landroidx/camera/core/Observable$Observer;)V
.line 342
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUserReleaseNotifier:Landroidx/concurrent/futures/CallbackToFutureAdapter$Completer;
if-eqz v1, :cond_3
.line 343
invoke-virtual {v1, v0}, Landroidx/concurrent/futures/CallbackToFutureAdapter$Completer;->set(Ljava/lang/Object;)Z
.line 344
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mUserReleaseNotifier:Landroidx/concurrent/futures/CallbackToFutureAdapter$Completer;
:cond_3
:goto_2
return-void
.end method
.method public getCameraControlInternal()Landroidx/camera/core/CameraControlInternal;
.locals 1
.line 959
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraControlInternal:Landroidx/camera/camera2/impl/Camera2CameraControl;
return-object v0
.end method
.method public getCameraInfo()Landroidx/camera/core/CameraInfo;
.locals 4
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/camera/core/CameraInfoUnavailableException;
}
.end annotation
.line 804
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraInfoLock:Ljava/lang/Object;
monitor-enter v0
.line 805
:try_start_0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraInfo:Landroidx/camera/core/CameraInfo;
if-nez v1, :cond_0
.line 807
new-instance v1, Landroidx/camera/camera2/impl/Camera2CameraInfo;
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraManager:Landroid/hardware/camera2/CameraManager;
iget-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-direct {v1, v2, v3}, Landroidx/camera/camera2/impl/Camera2CameraInfo;-><init>(Landroid/hardware/camera2/CameraManager;Ljava/lang/String;)V
iput-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraInfo:Landroidx/camera/core/CameraInfo;
.line 810
:cond_0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraInfo:Landroidx/camera/core/CameraInfo;
monitor-exit v0
return-object v1
:catchall_0
move-exception v1
.line 811
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw v1
.end method
.method public getCameraState()Landroidx/camera/core/Observable;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Landroidx/camera/core/Observable<",
"Landroidx/camera/core/BaseCamera$State;",
">;"
}
.end annotation
.line 471
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
return-object v0
.end method
.method getErrorMessage(I)Ljava/lang/String;
.locals 1
if-eqz p1, :cond_5
const/4 v0, 0x1
if-eq p1, v0, :cond_4
const/4 v0, 0x2
if-eq p1, v0, :cond_3
const/4 v0, 0x3
if-eq p1, v0, :cond_2
const/4 v0, 0x4
if-eq p1, v0, :cond_1
const/4 v0, 0x5
if-eq p1, v0, :cond_0
const-string p1, "UNKNOWN ERROR"
return-object p1
:cond_0
const-string p1, "ERROR_CAMERA_SERVICE"
return-object p1
:cond_1
const-string p1, "ERROR_CAMERA_DEVICE"
return-object p1
:cond_2
const-string p1, "ERROR_CAMERA_DISABLED"
return-object p1
:cond_3
const-string p1, "ERROR_MAX_CAMERAS_IN_USE"
return-object p1
:cond_4
const-string p1, "ERROR_CAMERA_IN_USE"
return-object p1
:cond_5
const-string p1, "ERROR_NONE"
return-object p1
.end method
.method getOrCreateUserReleaseFuture()Lcom/google/common/util/concurrent/ListenableFuture;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Lcom/google/common/util/concurrent/ListenableFuture<",
"Ljava/lang/Void;",
">;"
}
.end annotation
.line 504
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mUserReleaseFuture:Lcom/google/common/util/concurrent/ListenableFuture;
if-nez v0, :cond_1
.line 505
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->RELEASED:Landroidx/camera/camera2/impl/Camera$InternalState;
if-eq v0, v1, :cond_0
.line 506
new-instance v0, Landroidx/camera/camera2/impl/Camera$7;
invoke-direct {v0, p0}, Landroidx/camera/camera2/impl/Camera$7;-><init>(Landroidx/camera/camera2/impl/Camera;)V
invoke-static {v0}, Landroidx/concurrent/futures/CallbackToFutureAdapter;->getFuture(Landroidx/concurrent/futures/CallbackToFutureAdapter$Resolver;)Lcom/google/common/util/concurrent/ListenableFuture;
move-result-object v0
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mUserReleaseFuture:Lcom/google/common/util/concurrent/ListenableFuture;
goto :goto_0
:cond_0
const/4 v0, 0x0
.line 520
invoke-static {v0}, Landroidx/camera/core/impl/utils/futures/Futures;->immediateFuture(Ljava/lang/Object;)Lcom/google/common/util/concurrent/ListenableFuture;
move-result-object v0
iput-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mUserReleaseFuture:Lcom/google/common/util/concurrent/ListenableFuture;
.line 524
:cond_1
:goto_0
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mUserReleaseFuture:Lcom/google/common/util/concurrent/ListenableFuture;
return-object v0
.end method
.method isSessionCloseComplete()Z
.locals 1
.line 321
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mReleasedCaptureSessions:Ljava/util/Map;
invoke-interface {v0}, Ljava/util/Map;->isEmpty()Z
move-result v0
return v0
.end method
.method public isUseCaseOnline(Landroidx/camera/core/UseCase;)Z
.locals 2
.line 663
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 664
:try_start_0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1, p1}, Landroidx/camera/core/UseCaseAttachState;->isUseCaseOnline(Landroidx/camera/core/UseCase;)Z
move-result p1
monitor-exit v0
return p1
:catchall_0
move-exception p1
.line 665
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw p1
.end method
.method public onCameraControlCaptureRequests(Ljava/util/List;)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Landroidx/camera/core/CaptureConfig;",
">;)V"
}
.end annotation
.line 1012
invoke-virtual {p0, p1}, Landroidx/camera/camera2/impl/Camera;->submitCaptureRequests(Ljava/util/List;)V
return-void
.end method
.method public onCameraControlUpdateSessionConfig(Landroidx/camera/core/SessionConfig;)V
.locals 0
.line 1005
iput-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraControlSessionConfig:Landroidx/camera/core/SessionConfig;
.line 1006
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->updateCaptureSessionConfig()V
return-void
.end method
.method public onUseCaseActive(Landroidx/camera/core/UseCase;)V
.locals 3
.line 534
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_0
.line 535
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$8;
invoke-direct {v1, p0, p1}, Landroidx/camera/camera2/impl/Camera$8;-><init>(Landroidx/camera/camera2/impl/Camera;Landroidx/camera/core/UseCase;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
:cond_0
const-string v0, "Camera"
.line 544
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Use case "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " ACTIVE for camera "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 546
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 547
:try_start_0
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->reattachUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
.line 548
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1, p1}, Landroidx/camera/core/UseCaseAttachState;->setUseCaseActive(Landroidx/camera/core/UseCase;)V
.line 549
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 550
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->updateCaptureSessionConfig()V
return-void
:catchall_0
move-exception p1
.line 549
:try_start_1
monitor-exit v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw p1
.end method
.method public onUseCaseInactive(Landroidx/camera/core/UseCase;)V
.locals 3
.line 556
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_0
.line 557
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$9;
invoke-direct {v1, p0, p1}, Landroidx/camera/camera2/impl/Camera$9;-><init>(Landroidx/camera/camera2/impl/Camera;Landroidx/camera/core/UseCase;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
:cond_0
const-string v0, "Camera"
.line 566
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Use case "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " INACTIVE for camera "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 567
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 568
:try_start_0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1, p1}, Landroidx/camera/core/UseCaseAttachState;->setUseCaseInactive(Landroidx/camera/core/UseCase;)V
.line 569
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 571
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->updateCaptureSessionConfig()V
return-void
:catchall_0
move-exception p1
.line 569
:try_start_1
monitor-exit v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw p1
.end method
.method public onUseCaseReset(Landroidx/camera/core/UseCase;)V
.locals 3
.line 598
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_0
.line 599
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$11;
invoke-direct {v1, p0, p1}, Landroidx/camera/camera2/impl/Camera$11;-><init>(Landroidx/camera/camera2/impl/Camera;Landroidx/camera/core/UseCase;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
:cond_0
const-string v0, "Camera"
.line 608
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Use case "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " RESET for camera "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 609
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 610
:try_start_0
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->reattachUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
.line 611
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1, p1}, Landroidx/camera/core/UseCaseAttachState;->updateUseCase(Landroidx/camera/core/UseCase;)V
.line 612
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
const/4 p1, 0x0
.line 614
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->resetCaptureSession(Z)V
.line 615
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->updateCaptureSessionConfig()V
.line 616
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->openCaptureSession()V
return-void
:catchall_0
move-exception p1
.line 612
:try_start_1
monitor-exit v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw p1
.end method
.method public onUseCaseUpdated(Landroidx/camera/core/UseCase;)V
.locals 3
.line 577
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_0
.line 578
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$10;
invoke-direct {v1, p0, p1}, Landroidx/camera/camera2/impl/Camera$10;-><init>(Landroidx/camera/camera2/impl/Camera;Landroidx/camera/core/UseCase;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
:cond_0
const-string v0, "Camera"
.line 587
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Use case "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " UPDATED for camera "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 588
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 589
:try_start_0
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->reattachUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
.line 590
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1, p1}, Landroidx/camera/core/UseCaseAttachState;->updateUseCase(Landroidx/camera/core/UseCase;)V
.line 591
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 593
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->updateCaptureSessionConfig()V
return-void
:catchall_0
move-exception p1
.line 591
:try_start_1
monitor-exit v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw p1
.end method
.method public open()V
.locals 3
.line 208
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_0
.line 209
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$1;
invoke-direct {v1, p0}, Landroidx/camera/camera2/impl/Camera$1;-><init>(Landroidx/camera/camera2/impl/Camera;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
.line 218
:cond_0
sget-object v0, Landroidx/camera/camera2/impl/Camera$15;->$SwitchMap$androidx$camera$camera2$impl$Camera$InternalState:[I
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {v1}, Landroidx/camera/camera2/impl/Camera$InternalState;->ordinal()I
move-result v1
aget v0, v0, v1
const/4 v1, 0x1
if-eq v0, v1, :cond_3
const/4 v2, 0x2
if-eq v0, v2, :cond_1
.line 238
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "open() ignored due to being in state: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "Camera"
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_1
.line 223
:cond_1
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->REOPENING:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 230
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->isSessionCloseComplete()Z
move-result v0
if-nez v0, :cond_4
iget v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDeviceError:I
if-nez v0, :cond_4
.line 231
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDevice:Landroid/hardware/camera2/CameraDevice;
if-eqz v0, :cond_2
goto :goto_0
:cond_2
const/4 v1, 0x0
:goto_0
const-string v0, "Camera Device should be open if session close is not complete"
invoke-static {v1, v0}, Landroidx/core/util/Preconditions;->checkState(ZLjava/lang/String;)V
.line 233
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->OPENED:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 234
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->openCaptureSession()V
goto :goto_1
.line 220
:cond_3
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->openCameraDevice()V
:cond_4
:goto_1
return-void
.end method
.method openCameraDevice()V
.locals 5
.line 821
iget v0, p0, Landroidx/camera/camera2/impl/Camera;->mNumAvailableCameras:I
const-string v1, "Camera"
if-gtz v0, :cond_0
.line 822
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "No cameras available. Waiting for available camera before opening camera: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 824
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->PENDING_OPEN:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
return-void
.line 827
:cond_0
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->OPENING:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 830
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Opening camera: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 833
:try_start_0
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraManager:Landroid/hardware/camera2/CameraManager;
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->createDeviceStateCallback()Landroid/hardware/camera2/CameraDevice$StateCallback;
move-result-object v3
iget-object v4, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v0, v2, v3, v4}, Landroid/hardware/camera2/CameraManager;->openCamera(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;)V
:try_end_0
.catch Landroid/hardware/camera2/CameraAccessException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception v0
.line 835
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Unable to open camera "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
iget-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " due to "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v0}, Landroid/hardware/camera2/CameraAccessException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 836
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->INITIALIZED:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
:goto_0
return-void
.end method
.method openCaptureSession()V
.locals 4
.line 864
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->OPENED:Landroidx/camera/camera2/impl/Camera$InternalState;
if-ne v0, v1, :cond_0
const/4 v0, 0x1
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
invoke-static {v0}, Landroidx/core/util/Preconditions;->checkState(Z)V
.line 867
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 868
:try_start_0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1}, Landroidx/camera/core/UseCaseAttachState;->getOnlineBuilder()Landroidx/camera/core/SessionConfig$ValidatingBuilder;
move-result-object v1
.line 869
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 870
invoke-virtual {v1}, Landroidx/camera/core/SessionConfig$ValidatingBuilder;->isValid()Z
move-result v0
if-nez v0, :cond_1
const-string v0, "Camera"
const-string v1, "Unable to create capture session due to conflicting configurations"
.line 871
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
return-void
.line 876
:cond_1
:try_start_1
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
invoke-virtual {v1}, Landroidx/camera/core/SessionConfig$ValidatingBuilder;->build()Landroidx/camera/core/SessionConfig;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDevice:Landroid/hardware/camera2/CameraDevice;
invoke-virtual {v0, v1, v2}, Landroidx/camera/camera2/impl/CaptureSession;->open(Landroidx/camera/core/SessionConfig;Landroid/hardware/camera2/CameraDevice;)V
:try_end_1
.catch Landroid/hardware/camera2/CameraAccessException; {:try_start_1 .. :try_end_1} :catch_0
goto :goto_1
:catch_0
move-exception v0
const-string v1, "Camera"
.line 878
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Unable to configure camera "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
iget-object v3, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " due to "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v0}, Landroid/hardware/camera2/CameraAccessException;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
:goto_1
return-void
:catchall_0
move-exception v1
.line 869
:try_start_2
monitor-exit v0
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_0
throw v1
.end method
.method public release()Lcom/google/common/util/concurrent/ListenableFuture;
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Lcom/google/common/util/concurrent/ListenableFuture<",
"Ljava/lang/Void;",
">;"
}
.end annotation
.line 438
new-instance v0, Landroidx/camera/camera2/impl/Camera$5;
invoke-direct {v0, p0}, Landroidx/camera/camera2/impl/Camera$5;-><init>(Landroidx/camera/camera2/impl/Camera;)V
invoke-static {v0}, Landroidx/concurrent/futures/CallbackToFutureAdapter;->getFuture(Landroidx/concurrent/futures/CallbackToFutureAdapter$Resolver;)Lcom/google/common/util/concurrent/ListenableFuture;
move-result-object v0
.line 454
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v2}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v2
if-eq v1, v2, :cond_0
.line 455
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v2, Landroidx/camera/camera2/impl/Camera$6;
invoke-direct {v2, p0}, Landroidx/camera/camera2/impl/Camera$6;-><init>(Landroidx/camera/camera2/impl/Camera;)V
invoke-virtual {v1, v2}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
goto :goto_0
.line 462
:cond_0
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->releaseInternal()V
:goto_0
return-object v0
.end method
.method releaseInternal()V
.locals 2
.line 477
sget-object v0, Landroidx/camera/camera2/impl/Camera$15;->$SwitchMap$androidx$camera$camera2$impl$Camera$InternalState:[I
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {v1}, Landroidx/camera/camera2/impl/Camera$InternalState;->ordinal()I
move-result v1
aget v0, v0, v1
const/4 v1, 0x1
packed-switch v0, :pswitch_data_0
.line 497
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "release() ignored due to being in state: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "Camera"
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_1
.line 486
:pswitch_0
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->RELEASING:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 487
invoke-virtual {p0, v1}, Landroidx/camera/camera2/impl/Camera;->closeCamera(Z)V
goto :goto_1
.line 494
:pswitch_1
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->RELEASING:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
goto :goto_1
.line 480
:pswitch_2
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mCameraDevice:Landroid/hardware/camera2/CameraDevice;
if-nez v0, :cond_0
goto :goto_0
:cond_0
const/4 v1, 0x0
:goto_0
invoke-static {v1}, Landroidx/core/util/Preconditions;->checkState(Z)V
.line 481
sget-object v0, Landroidx/camera/camera2/impl/Camera$InternalState;->RELEASING:Landroidx/camera/camera2/impl/Camera$InternalState;
invoke-virtual {p0, v0}, Landroidx/camera/camera2/impl/Camera;->setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.line 482
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->isSessionCloseComplete()Z
move-result v0
invoke-static {v0}, Landroidx/core/util/Preconditions;->checkState(Z)V
.line 483
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->finishClose()V
:goto_1
return-void
nop
:pswitch_data_0
.packed-switch 0x1
:pswitch_2
:pswitch_1
:pswitch_0
:pswitch_1
:pswitch_1
:pswitch_2
:pswitch_1
.end packed-switch
.end method
.method public removeOnlineUseCase(Ljava/util/Collection;)V
.locals 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection<",
"Landroidx/camera/core/UseCase;",
">;)V"
}
.end annotation
.line 755
invoke-interface {p1}, Ljava/util/Collection;->isEmpty()Z
move-result v0
if-eqz v0, :cond_0
return-void
.line 759
:cond_0
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_1
.line 760
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$13;
invoke-direct {v1, p0, p1}, Landroidx/camera/camera2/impl/Camera$13;-><init>(Landroidx/camera/camera2/impl/Camera;Ljava/util/Collection;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
:cond_1
const-string v0, "Camera"
.line 769
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Use cases "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " OFFLINE for camera "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 770
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mAttachedUseCaseLock:Ljava/lang/Object;
monitor-enter v0
.line 771
:try_start_0
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 772
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_0
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_3
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Landroidx/camera/core/UseCase;
.line 773
iget-object v4, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v4, v3}, Landroidx/camera/core/UseCaseAttachState;->isUseCaseOnline(Landroidx/camera/core/UseCase;)Z
move-result v4
if-eqz v4, :cond_2
.line 774
invoke-interface {v1, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 776
:cond_2
iget-object v4, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v4, v3}, Landroidx/camera/core/UseCaseAttachState;->setUseCaseOffline(Landroidx/camera/core/UseCase;)V
goto :goto_0
.line 779
:cond_3
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_1
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_4
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/camera/core/UseCase;
.line 780
invoke-direct {p0, v2}, Landroidx/camera/camera2/impl/Camera;->notifyDetachFromUseCaseSurfaces(Landroidx/camera/core/UseCase;)V
goto :goto_1
.line 783
:cond_4
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mUseCaseAttachState:Landroidx/camera/core/UseCaseAttachState;
invoke-virtual {v1}, Landroidx/camera/core/UseCaseAttachState;->getOnlineUseCases()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1}, Ljava/util/Collection;->isEmpty()Z
move-result v1
if-eqz v1, :cond_5
const/4 p1, 0x1
.line 784
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->resetCaptureSession(Z)V
.line 785
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->close()V
.line 786
monitor-exit v0
return-void
.line 788
:cond_5
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.line 790
invoke-direct {p0}, Landroidx/camera/camera2/impl/Camera;->updateCaptureSessionConfig()V
const/4 v0, 0x0
.line 791
invoke-direct {p0, v0}, Landroidx/camera/camera2/impl/Camera;->resetCaptureSession(Z)V
.line 793
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
sget-object v1, Landroidx/camera/camera2/impl/Camera$InternalState;->OPENED:Landroidx/camera/camera2/impl/Camera$InternalState;
if-ne v0, v1, :cond_6
.line 794
invoke-virtual {p0}, Landroidx/camera/camera2/impl/Camera;->openCaptureSession()V
.line 797
:cond_6
invoke-direct {p0, p1}, Landroidx/camera/camera2/impl/Camera;->clearCameraControlPreviewAspectRatio(Ljava/util/Collection;)V
return-void
:catchall_0
move-exception p1
.line 788
:try_start_1
monitor-exit v0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw p1
.end method
.method setState(Landroidx/camera/camera2/impl/Camera$InternalState;)V
.locals 1
.line 1089
iput-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mState:Landroidx/camera/camera2/impl/Camera$InternalState;
.line 1091
sget-object v0, Landroidx/camera/camera2/impl/Camera$15;->$SwitchMap$androidx$camera$camera2$impl$Camera$InternalState:[I
invoke-virtual {p1}, Landroidx/camera/camera2/impl/Camera$InternalState;->ordinal()I
move-result p1
aget p1, v0, p1
packed-switch p1, :pswitch_data_0
goto :goto_0
.line 1112
:pswitch_0
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
sget-object v0, Landroidx/camera/core/BaseCamera$State;->RELEASED:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {p1, v0}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
goto :goto_0
.line 1109
:pswitch_1
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
sget-object v0, Landroidx/camera/core/BaseCamera$State;->RELEASING:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {p1, v0}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
goto :goto_0
.line 1096
:pswitch_2
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
sget-object v0, Landroidx/camera/core/BaseCamera$State;->PENDING_OPEN:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {p1, v0}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
goto :goto_0
.line 1100
:pswitch_3
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
sget-object v0, Landroidx/camera/core/BaseCamera$State;->OPENING:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {p1, v0}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
goto :goto_0
.line 1103
:pswitch_4
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
sget-object v0, Landroidx/camera/core/BaseCamera$State;->OPEN:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {p1, v0}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
goto :goto_0
.line 1106
:pswitch_5
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
sget-object v0, Landroidx/camera/core/BaseCamera$State;->CLOSING:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {p1, v0}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
goto :goto_0
.line 1093
:pswitch_6
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mObservableState:Landroidx/camera/core/impl/LiveDataObservable;
sget-object v0, Landroidx/camera/core/BaseCamera$State;->CLOSED:Landroidx/camera/core/BaseCamera$State;
invoke-virtual {p1, v0}, Landroidx/camera/core/impl/LiveDataObservable;->postValue(Ljava/lang/Object;)V
:goto_0
return-void
:pswitch_data_0
.packed-switch 0x1
:pswitch_6
:pswitch_5
:pswitch_4
:pswitch_3
:pswitch_3
:pswitch_2
:pswitch_1
:pswitch_0
.end packed-switch
.end method
.method submitCaptureRequests(Ljava/util/List;)V
.locals 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Landroidx/camera/core/CaptureConfig;",
">;)V"
}
.end annotation
.line 971
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
invoke-virtual {v1}, Landroid/os/Handler;->getLooper()Landroid/os/Looper;
move-result-object v1
if-eq v0, v1, :cond_0
.line 972
iget-object v0, p0, Landroidx/camera/camera2/impl/Camera;->mHandler:Landroid/os/Handler;
new-instance v1, Landroidx/camera/camera2/impl/Camera$14;
invoke-direct {v1, p0, p1}, Landroidx/camera/camera2/impl/Camera$14;-><init>(Landroidx/camera/camera2/impl/Camera;Ljava/util/List;)V
invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
return-void
.line 981
:cond_0
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 982
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_0
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_2
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroidx/camera/core/CaptureConfig;
.line 984
invoke-static {v1}, Landroidx/camera/core/CaptureConfig$Builder;->from(Landroidx/camera/core/CaptureConfig;)Landroidx/camera/core/CaptureConfig$Builder;
move-result-object v2
.line 986
invoke-virtual {v1}, Landroidx/camera/core/CaptureConfig;->getSurfaces()Ljava/util/List;
move-result-object v3
invoke-interface {v3}, Ljava/util/List;->isEmpty()Z
move-result v3
if-eqz v3, :cond_1
invoke-virtual {v1}, Landroidx/camera/core/CaptureConfig;->isUseRepeatingSurface()Z
move-result v1
if-eqz v1, :cond_1
.line 990
invoke-direct {p0, v2}, Landroidx/camera/camera2/impl/Camera;->checkAndAttachRepeatingSurface(Landroidx/camera/core/CaptureConfig$Builder;)Z
move-result v1
if-nez v1, :cond_1
goto :goto_0
.line 994
:cond_1
invoke-virtual {v2}, Landroidx/camera/core/CaptureConfig$Builder;->build()Landroidx/camera/core/CaptureConfig;
move-result-object v1
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_0
.line 997
:cond_2
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "issue capture request for camera "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
iget-object v1, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
const-string v1, "Camera"
invoke-static {v1, p1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 999
iget-object p1, p0, Landroidx/camera/camera2/impl/Camera;->mCaptureSession:Landroidx/camera/camera2/impl/CaptureSession;
invoke-virtual {p1, v0}, Landroidx/camera/camera2/impl/CaptureSession;->issueCaptureRequests(Ljava/util/List;)V
return-void
.end method
.method public toString()Ljava/lang/String;
.locals 4
.line 1018
sget-object v0, Ljava/util/Locale;->US:Ljava/util/Locale;
const/4 v1, 0x2
new-array v1, v1, [Ljava/lang/Object;
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
const/4 v3, 0x0
aput-object v2, v1, v3
iget-object v2, p0, Landroidx/camera/camera2/impl/Camera;->mCameraId:Ljava/lang/String;
const/4 v3, 0x1
aput-object v2, v1, v3
const-string v2, "Camera@%x[id=%s]"
invoke-static {v0, v2, v1}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method