CameraPreview.smali
.class public Lcom/imo/android/imoim/camera/CameraPreview;
.super Landroid/view/SurfaceView;
.source "SourceFile"
# interfaces
.implements Landroid/view/SurfaceHolder$Callback;
# instance fields
.field public a:I
.field b:Lcom/imo/android/imoim/camera/CameraActivity2;
.field private c:Landroid/view/SurfaceHolder;
.field private d:Landroid/hardware/Camera;
# direct methods
.method public constructor <init>(Lcom/imo/android/imoim/camera/CameraActivity2;Landroid/hardware/Camera;)V
.registers 3
.line 32
invoke-direct {p0, p1}, Landroid/view/SurfaceView;-><init>(Landroid/content/Context;)V
.line 33
iput-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->b:Lcom/imo/android/imoim/camera/CameraActivity2;
.line 34
iput-object p2, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
.line 38
invoke-virtual {p0}, Lcom/imo/android/imoim/camera/CameraPreview;->getHolder()Landroid/view/SurfaceHolder;
move-result-object p1
iput-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->c:Landroid/view/SurfaceHolder;
.line 39
invoke-interface {p1, p0}, Landroid/view/SurfaceHolder;->addCallback(Landroid/view/SurfaceHolder$Callback;)V
.line 41
iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->c:Landroid/view/SurfaceHolder;
const/4 p2, 0x3
invoke-interface {p1, p2}, Landroid/view/SurfaceHolder;->setType(I)V
return-void
.end method
.method private a()V
.registers 16
.line 118
iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {v0}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;
move-result-object v0
.line 119
invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getPictureSize()Landroid/hardware/Camera$Size;
move-result-object v1
.line 120
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 11071
invoke-static {v2, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 121
invoke-virtual {v0}, Landroid/hardware/Camera$Parameters;->getSupportedPictureSizes()Ljava/util/List;
move-result-object v1
const/4 v4, 0x0
.line 122
invoke-interface {v1, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroid/hardware/Camera$Size;
.line 124
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 125
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 128
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 129
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 134
: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 12071
invoke-static {v2, v6}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_3b
.line 136
: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 13071
invoke-static {v2, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 137
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 138
iget-object v1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {v1, v0}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
return-void
.end method
# virtual methods
.method public setCamera(Landroid/hardware/Camera;)V
.registers 3
.line 45
iput-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
const/4 p1, 0x0
const/4 v0, 0x0
.line 46
invoke-virtual {p0, v0, p1, p1, p1}, Lcom/imo/android/imoim/camera/CameraPreview;->surfaceChanged(Landroid/view/SurfaceHolder;III)V
return-void
.end method
.method public surfaceChanged(Landroid/view/SurfaceHolder;III)V
.registers 9
const-string p2, "continuous-picture"
const-string p3, " "
.line 66
invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
const-string p4, "surfaceChanged "
invoke-virtual {p4, p1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
const-string p4, "CameraPreview"
.line 3071
invoke-static {p4, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 70
iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->c:Landroid/view/SurfaceHolder;
invoke-interface {p1}, Landroid/view/SurfaceHolder;->getSurface()Landroid/view/Surface;
move-result-object p1
if-nez p1, :cond_1c
return-void
.line 79
:cond_1c
:try_start_1c
iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {p1}, Landroid/hardware/Camera;->stopPreview()V
:try_end_21
.catch Ljava/lang/Exception; {:try_start_1c .. :try_end_21} :catch_21
.line 87
:catch_21
:try_start_21
new-instance p1, Landroid/hardware/Camera$CameraInfo;
invoke-direct {p1}, Landroid/hardware/Camera$CameraInfo;-><init>()V
.line 88
iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->b:Lcom/imo/android/imoim/camera/CameraActivity2;
.line 3596
iget-object v0, v0, Lcom/imo/android/imoim/camera/CameraActivity2;->i:Lcom/imo/android/imoim/camera/g;
.line 4200
iget v0, v0, Lcom/imo/android/imoim/camera/g;->d:I
.line 88
invoke-static {v0, p1}, Landroid/hardware/Camera;->getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V
.line 5142
iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->b:Lcom/imo/android/imoim/camera/CameraActivity2;
const-string v1, "window"
.line 5143
invoke-virtual {v0, v1}, Lcom/imo/android/imoim/camera/CameraActivity2;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/view/WindowManager;
.line 5144
invoke-interface {v0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;
move-result-object v0
invoke-virtual {v0}, Landroid/view/Display;->getRotation()I
move-result v0
const/4 v1, 0x1
const/4 v2, 0x0
if-eqz v0, :cond_56
if-eq v0, v1, :cond_54
const/4 v3, 0x2
if-eq v0, v3, :cond_51
const/4 v3, 0x3
if-eq v0, v3, :cond_4e
goto :goto_56
:cond_4e
const/16 v2, 0x10e
goto :goto_56
:cond_51
const/16 v2, 0xb4
goto :goto_56
:cond_54
const/16 v2, 0x5a
.line 5168
:cond_56
:goto_56
iget v0, p1, Landroid/hardware/Camera$CameraInfo;->facing:I
if-ne v0, v1, :cond_64
.line 5169
iget p1, p1, Landroid/hardware/Camera$CameraInfo;->orientation:I
add-int/2addr p1, v2
rem-int/lit16 p1, p1, 0x168
rsub-int p1, p1, 0x168
.line 5170
rem-int/lit16 p1, p1, 0x168
goto :goto_6b
.line 5172
:cond_64
iget p1, p1, Landroid/hardware/Camera$CameraInfo;->orientation:I
sub-int/2addr p1, v2
add-int/lit16 p1, p1, 0x168
rem-int/lit16 p1, p1, 0x168
.line 89
:goto_6b
iput p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->a:I
.line 90
new-instance p1, Ljava/lang/StringBuilder;
const-string v0, "orientation "
invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->a:I
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 6071
invoke-static {p4, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 91
iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
iget v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->a:I
invoke-virtual {p1, v0}, Landroid/hardware/Camera;->setDisplayOrientation(I)V
.line 92
iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {p1}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;
move-result-object p1
iget v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->a:I
invoke-virtual {p1, v0}, Landroid/hardware/Camera$Parameters;->setRotation(I)V
.line 93
iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {p1}, Landroid/hardware/Camera;->getParameters()Landroid/hardware/Camera$Parameters;
move-result-object p1
.line 94
invoke-virtual {p1}, Landroid/hardware/Camera$Parameters;->getSupportedFocusModes()Ljava/util/List;
move-result-object v0
.line 95
invoke-interface {v0, p2}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_aa
.line 96
invoke-virtual {p1, p2}, Landroid/hardware/Camera$Parameters;->setFocusMode(Ljava/lang/String;)V
.line 97
iget-object p2, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {p2, p1}, Landroid/hardware/Camera;->setParameters(Landroid/hardware/Camera$Parameters;)V
.line 100
:cond_aa
invoke-direct {p0}, Lcom/imo/android/imoim/camera/CameraPreview;->a()V
.line 103
iget-object p2, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->c:Landroid/view/SurfaceHolder;
invoke-virtual {p2, v0}, Landroid/hardware/Camera;->setPreviewDisplay(Landroid/view/SurfaceHolder;)V
.line 104
iget-object p2, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {p2}, Landroid/hardware/Camera;->startPreview()V
.line 107
invoke-virtual {p1}, Landroid/hardware/Camera$Parameters;->getPreviewSize()Landroid/hardware/Camera$Size;
move-result-object p1
.line 108
invoke-static {}, Lcom/imo/android/imoim/util/ei;->p()Landroid/util/Pair;
move-result-object p2
.line 109
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "params wxh: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v1, p1, Landroid/hardware/Camera$Size;->width:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget p1, p1, Landroid/hardware/Camera$Size;->height:I
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 7071
invoke-static {p4, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 110
new-instance p1, Ljava/lang/StringBuilder;
const-string v0, "screen wxh: "
invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v0, p2, Landroid/util/Pair;->first:Ljava/lang/Object;
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object p2, p2, Landroid/util/Pair;->second:Ljava/lang/Object;
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 8071
invoke-static {p4, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 111
new-instance p1, Ljava/lang/StringBuilder;
const-string p2, "view wxh: "
invoke-direct {p1, p2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p0}, Lcom/imo/android/imoim/camera/CameraPreview;->getWidth()I
move-result p2
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Lcom/imo/android/imoim/camera/CameraPreview;->getHeight()I
move-result p2
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 9071
invoke-static {p4, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
:try_end_116
.catch Ljava/lang/Exception; {:try_start_21 .. :try_end_116} :catch_117
return-void
:catch_117
move-exception p1
.line 113
new-instance p2, Ljava/lang/StringBuilder;
const-string p3, "Error starting camera preview: "
invoke-direct {p2, p3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object p1
invoke-virtual {p2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 10071
invoke-static {p4, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method public surfaceCreated(Landroid/view/SurfaceHolder;)V
.registers 5
.line 50
invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
const-string v1, "surfaceCreate "
invoke-virtual {v1, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
const-string v1, "CameraPreview"
.line 1071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 53
:try_start_f
iget-object v0, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {v0, p1}, Landroid/hardware/Camera;->setPreviewDisplay(Landroid/view/SurfaceHolder;)V
.line 54
iget-object p1, p0, Lcom/imo/android/imoim/camera/CameraPreview;->d:Landroid/hardware/Camera;
invoke-virtual {p1}, Landroid/hardware/Camera;->startPreview()V
:try_end_19
.catch Ljava/lang/Exception; {:try_start_f .. :try_end_19} :catch_1a
return-void
:catch_1a
move-exception p1
.line 56
new-instance v0, Ljava/lang/StringBuilder;
const-string v2, "Error setting camera preview: "
invoke-direct {v0, v2}, 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
const/4 v0, 0x1
.line 1079
invoke-static {v1, p1, v0}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V
return-void
.end method
.method public surfaceDestroyed(Landroid/view/SurfaceHolder;)V
.registers 3
.line 62
invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
const-string v0, "surfaceDestroyed "
invoke-virtual {v0, p1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
const-string v0, "CameraPreview"
.line 2071
invoke-static {v0, p1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method