CameraPreview2.smali

.class public Lcom/imo/android/imoim/camera/CameraPreview2;
.super Landroid/view/TextureView;
.source "SourceFile"

# interfaces
.implements Landroid/view/TextureView$SurfaceTextureListener;


# instance fields
.field public a:I

.field b:Landroid/app/Activity;

.field private c:Landroid/hardware/Camera;


# direct methods
.method public constructor <init>(Landroid/app/Activity;Landroid/hardware/Camera;)V
    .registers 3

    .line 30
    invoke-direct {p0, p1}, Landroid/view/TextureView;-><init>(Landroid/content/Context;)V

    .line 31
    iput-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->b:Landroid/app/Activity;

    .line 32
    iput-object p2, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    .line 33
    invoke-virtual {p0, p0}, Lcom/imo/android/imoim/camera/CameraPreview2;->setSurfaceTextureListener(Landroid/view/TextureView$SurfaceTextureListener;)V

    return-void
.end method

.method private a()V
    .registers 16

    .line 106
    iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {v0}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v0

    .line 107
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPictureSize()Landroid/hardware/Camera$Size;

    move-result-object v1

    .line 108
    new-instance v2, Ljava/lang/StringBuilder;

    const-string v3, "default picsize wxh: "

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

    iget v3, v1, Landroid/hardware/Camera$Size;->width:I

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

    const-string v3, " "

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

    iget v1, v1, Landroid/hardware/Camera$Size;->height:I

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

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

    move-result-object v1

    const-string v2, "CameraPreview"

    .line 10071
    invoke-static {v2, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 109
    invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getSupportedPictureSizes()Ljava/util/List;

    move-result-object v1

    const/4 v4, 0x0

    .line 110
    invoke-interface {v1, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Landroid/hardware/Camera$Size;

    .line 112
    invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    const v5, 0xf423f

    :cond_3b
    :goto_3b
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v6

    if-eqz v6, :cond_a0

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

    move-result-object v6

    check-cast v6, Landroid/hardware/Camera$Size;

    .line 113
    iget v7, v6, Landroid/hardware/Camera$Size;->width:I

    iget v8, v6, Landroid/hardware/Camera$Size;->height:I

    invoke-static {v7, v8}, Ljava/lang/Math;->max(II)I

    move-result v7

    const/16 v8, 0x400

    if-lt v7, v8, :cond_3b

    .line 116
    iget v9, v6, Landroid/hardware/Camera$Size;->width:I

    int-to-double v9, v9

    iget v11, v6, Landroid/hardware/Camera$Size;->height:I

    int-to-double v11, v11

    invoke-static {v9, v10}, Ljava/lang/Double;->isNaN(D)Z

    invoke-static {v11, v12}, Ljava/lang/Double;->isNaN(D)Z

    div-double/2addr v9, v11

    sub-int/2addr v8, v7

    .line 117
    invoke-static {v8}, Ljava/lang/Math;->abs(I)I

    move-result v7

    const-wide v11, 0x40c3880000000000L    # 10000.0

    const-wide v13, 0x3ffc71c71c71c71cL    # 1.7777777777777777

    sub-double/2addr v9, v13

    invoke-static {v9, v10}, Ljava/lang/Math;->abs(D)D

    move-result-wide v8

    mul-double v8, v8, v11

    double-to-int v8, v8

    add-int/2addr v7, v8

    if-gt v7, v5, :cond_7c

    move-object v4, v6

    move v5, v7

    .line 122
    :cond_7c
    new-instance v8, Ljava/lang/StringBuilder;

    const-string v9, "Available resolution: "

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

    iget v9, v6, Landroid/hardware/Camera$Size;->width:I

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

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

    iget v6, v6, Landroid/hardware/Camera$Size;->height:I

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

    const-string v6, " newDiff: "

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

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

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

    move-result-object v6

    .line 11071
    invoke-static {v2, v6}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_3b

    .line 124
    :cond_a0
    new-instance v1, Ljava/lang/StringBuilder;

    const-string v5, "chosen size "

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

    iget v5, v4, Landroid/hardware/Camera$Size;->width:I

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

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

    iget v3, v4, Landroid/hardware/Camera$Size;->height:I

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

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

    move-result-object v1

    .line 12071
    invoke-static {v2, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 125
    iget v1, v4, Landroid/hardware/Camera$Size;->width:I

    iget v2, v4, Landroid/hardware/Camera$Size;->height:I

    invoke-virtual {v0, v1, v2}, Landroid/hardware/Camera$Parameters;->setPictureSize(II)V

    .line 126
    iget-object v1, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {v1, v0}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V

    return-void
.end method


# virtual methods
.method public onSurfaceTextureAvailable(Landroid/graphics/SurfaceTexture;II)V
    .registers 5

    const-string p2, "CameraPreview"

    const-string p3, "surfaceCreate "

    .line 13071
    invoke-static {p2, p3}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 171
    :try_start_7
    iget-object p3, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {p3, p1}, Landroid/hardware/Camera;->setPreviewTexture(Landroid/graphics/SurfaceTexture;)V

    .line 172
    iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {p1}, Landroid/hardware/Camera;->startPreview()V
    :try_end_11
    .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_11} :catch_12

    return-void

    :catch_12
    move-exception p1

    .line 174
    new-instance p3, Ljava/lang/StringBuilder;

    const-string v0, "Error setting camera preview: "

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

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

    move-result-object p1

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

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

    move-result-object p1

    const/4 p3, 0x1

    .line 13079
    invoke-static {p2, p1, p3}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V

    return-void
.end method

.method public onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z
    .registers 2

    const/4 p1, 0x0

    return p1
.end method

.method public onSurfaceTextureSizeChanged(Landroid/graphics/SurfaceTexture;II)V
    .registers 4

    return-void
.end method

.method public onSurfaceTextureUpdated(Landroid/graphics/SurfaceTexture;)V
    .registers 2

    return-void
.end method

.method public setCamera(Landroid/hardware/Camera;)V
    .registers 10

    const-string v0, "continuous-picture"

    const-string v1, " "

    .line 40
    iput-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    .line 1051
    new-instance p1, Ljava/lang/StringBuilder;

    const-string v2, "surfaceChanged "

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

    const/4 v2, 0x0

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

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

    move-result-object p1

    const-string v2, "CameraPreview"

    .line 2071
    invoke-static {v2, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1055
    invoke-virtual {p0}, Lcom/imo/android/imoim/camera/CameraPreview2;->getSurfaceTexture()Landroid/graphics/SurfaceTexture;

    move-result-object p1

    if-eqz p1, :cond_131

    .line 1064
    :try_start_20
    iget-object v3, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {v3}, Landroid/hardware/Camera;->stopPreview()V
    :try_end_25
    .catch Ljava/lang/Exception; {:try_start_20 .. :try_end_25} :catch_25

    .line 1072
    :catch_25
    :try_start_25
    new-instance v3, Landroid/hardware/Camera$CameraInfo;

    invoke-direct {v3}, Landroid/hardware/Camera$CameraInfo;-><init>()V

    .line 1073
    iget-object v4, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->b:Landroid/app/Activity;

    check-cast v4, Lcom/imo/android/imoim/camera/CameraActivity2;

    .line 2596
    iget-object v4, v4, Lcom/imo/android/imoim/camera/CameraActivity2;->i:Lcom/imo/android/imoim/camera/g;

    .line 3200
    iget v4, v4, Lcom/imo/android/imoim/camera/g;->d:I

    .line 1073
    invoke-static {v4, v3}, Landroid/hardware/Camera;->getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V

    .line 4130
    iget-object v4, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->b:Landroid/app/Activity;

    const-string v5, "window"

    .line 4131
    invoke-virtual {v4, v5}, Landroid/app/Activity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v4

    check-cast v4, Landroid/view/WindowManager;

    .line 4132
    invoke-interface {v4}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;

    move-result-object v4

    invoke-virtual {v4}, Landroid/view/Display;->getRotation()I

    move-result v4

    const/4 v5, 0x1

    const/4 v6, 0x0

    if-eqz v4, :cond_5c

    if-eq v4, v5, :cond_5a

    const/4 v7, 0x2

    if-eq v4, v7, :cond_57

    const/4 v7, 0x3

    if-eq v4, v7, :cond_54

    goto :goto_5c

    :cond_54
    const/16 v6, 0x10e

    goto :goto_5c

    :cond_57
    const/16 v6, 0xb4

    goto :goto_5c

    :cond_5a
    const/16 v6, 0x5a

    .line 4156
    :cond_5c
    :goto_5c
    iget v4, v3, Landroid/hardware/Camera$CameraInfo;->facing:I

    if-ne v4, v5, :cond_6a

    .line 4157
    iget v3, v3, Landroid/hardware/Camera$CameraInfo;->orientation:I

    add-int/2addr v3, v6

    rem-int/lit16 v3, v3, 0x168

    rsub-int v3, v3, 0x168

    .line 4158
    rem-int/lit16 v3, v3, 0x168

    goto :goto_71

    .line 4160
    :cond_6a
    iget v3, v3, Landroid/hardware/Camera$CameraInfo;->orientation:I

    sub-int/2addr v3, v6

    add-int/lit16 v3, v3, 0x168

    rem-int/lit16 v3, v3, 0x168

    .line 1075
    :goto_71
    iput v3, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->a:I

    .line 1076
    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "orientation "

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

    iget v4, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->a:I

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

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

    move-result-object v3

    .line 5071
    invoke-static {v2, v3}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1077
    iget-object v3, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    iget v4, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->a:I

    invoke-virtual {v3, v4}, Landroid/hardware/Camera;->setDisplayOrientation(I)V

    .line 1078
    iget-object v3, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {v3}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v3

    iget v4, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->a:I

    invoke-virtual {v3, v4}, Landroid/hardware/Camera$Parameters;->setRotation(I)V

    .line 1081
    iget-object v3, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {v3}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;

    move-result-object v3

    .line 1082
    invoke-virtual {v3}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;

    move-result-object v4

    .line 1083
    invoke-static {}, Lcom/imo/android/imoim/util/ei;->p()Landroid/util/Pair;

    move-result-object v5

    .line 1084
    new-instance v6, Ljava/lang/StringBuilder;

    const-string v7, "params wxh: "

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

    iget v7, v4, Landroid/hardware/Camera$Size;->width:I

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

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

    iget v4, v4, Landroid/hardware/Camera$Size;->height:I

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

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

    move-result-object v4

    .line 6071
    invoke-static {v2, v4}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1085
    new-instance v4, Ljava/lang/StringBuilder;

    const-string v6, "screen wxh: "

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

    iget-object v6, v5, Landroid/util/Pair;->first:Ljava/lang/Object;

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

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

    iget-object v5, v5, Landroid/util/Pair;->second:Ljava/lang/Object;

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

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

    move-result-object v4

    .line 7071
    invoke-static {v2, v4}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1086
    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "view wxh: "

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

    invoke-virtual {p0}, Lcom/imo/android/imoim/camera/CameraPreview2;->getWidth()I

    move-result v5

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

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

    invoke-virtual {p0}, Lcom/imo/android/imoim/camera/CameraPreview2;->getHeight()I

    move-result v1

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

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

    move-result-object v1

    .line 8071
    invoke-static {v2, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 1088
    invoke-virtual {v3}, Landroid/hardware/Camera$Parameters;->getSupportedFocusModes()Ljava/util/List;

    move-result-object v1

    .line 1089
    invoke-interface {v1, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_10d

    .line 1090
    invoke-virtual {v3, v0}, Landroid/hardware/Camera$Parameters;->setFocusMode(Ljava/lang/String;)V

    .line 1091
    iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {v0, v3}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V

    .line 1094
    :cond_10d
    invoke-direct {p0}, Lcom/imo/android/imoim/camera/CameraPreview2;->a()V

    .line 1097
    iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {v0, p1}, Landroid/hardware/Camera;->setPreviewTexture(Landroid/graphics/SurfaceTexture;)V

    .line 1098
    iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview2;->c:Landroid/hardware/Camera;

    invoke-virtual {p1}, Landroid/hardware/Camera;->startPreview()V
    :try_end_11a
    .catch Ljava/lang/Exception; {:try_start_25 .. :try_end_11a} :catch_11b

    return-void

    :catch_11b
    move-exception p1

    .line 1101
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v1, "Error starting camera preview: "

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

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

    move-result-object p1

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

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

    move-result-object p1

    .line 9071
    invoke-static {v2, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V

    :cond_131
    return-void
.end method