a.smali
.class public final Lcom/imo/android/imoim/rooms/sharescreen/capture/a;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/imo/android/imoim/rooms/sharescreen/capture/b;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;,
Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;
}
.end annotation
# instance fields
.field final a:Ljava/lang/Object;
.field b:Landroid/media/ImageReader;
.field c:[I
.field private d:Landroid/content/Intent;
.field private e:Landroid/hardware/display/VirtualDisplay;
.field private f:Landroid/media/projection/MediaProjection;
.field private g:Landroid/os/HandlerThread;
# direct methods
.method public constructor <init>()V
.registers 2
.line 32
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 33
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->a:Ljava/lang/Object;
return-void
.end method
.method private final f()Z
.registers 18
move-object/from16 v1, p0
.line 71
iget-object v0, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
const/4 v2, 0x1
if-eqz v0, :cond_f
const-string v0, "AndroidScreenCapture"
const-string v3, "buildScreenCapture: already build"
.line 3071
invoke-static {v0, v3}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
return v2
.line 3129
:cond_f
new-instance v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;
invoke-direct {v0}, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;-><init>()V
const/16 v3, 0x3c0
.line 3160
iput v3, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->a:I
const/16 v3, 0x2d0
.line 3161
iput v3, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->b:I
.line 3132
new-instance v3, Landroid/util/DisplayMetrics;
invoke-direct {v3}, Landroid/util/DisplayMetrics;-><init>()V
.line 3133
invoke-static {}, Lcom/imo/android/imoim/IMO;->a()Lcom/imo/android/imoim/IMO;
move-result-object v4
const-string v5, "window"
invoke-virtual {v4, v5}, Lcom/imo/android/imoim/IMO;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v4
if-eqz v4, :cond_e3
check-cast v4, Landroid/view/WindowManager;
.line 3134
invoke-interface {v4}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;
move-result-object v4
invoke-virtual {v4, v3}, Landroid/view/Display;->getRealMetrics(Landroid/util/DisplayMetrics;)V
.line 3135
iget v3, v3, Landroid/util/DisplayMetrics;->densityDpi:I
.line 3163
iput v3, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->d:I
.line 4162
iput v2, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->c:I
.line 77
invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v3
const-string v4, "buildScreenCapture: params="
invoke-virtual {v4, v3}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
const-string v4, "AndroidScreenCapture"
.line 5071
invoke-static {v4, v3}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 79
iget-object v3, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->a:Ljava/lang/Object;
monitor-enter v3
.line 80
:try_start_4e
invoke-static {}, Lcom/imo/android/imoim/IMO;->a()Lcom/imo/android/imoim/IMO;
move-result-object v4
const-string v5, "media_projection"
invoke-virtual {v4, v5}, Lcom/imo/android/imoim/IMO;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v4
if-eqz v4, :cond_d8
check-cast v4, Landroid/media/projection/MediaProjectionManager;
.line 81
iget-object v5, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->d:Landroid/content/Intent;
if-eqz v5, :cond_67
const/4 v6, -0x1
.line 83
invoke-virtual {v4, v6, v5}, Landroid/media/projection/MediaProjectionManager;->getMediaProjection(ILandroid/content/Intent;)Landroid/media/projection/MediaProjection;
move-result-object v4
iput-object v4, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
.line 85
:cond_67
iget-object v4, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
const/4 v5, 0x0
if-nez v4, :cond_75
const-string v0, "AndroidScreenCapture"
const-string v2, "buildScreenCapture: mediaProjection is null!"
.line 6071
invoke-static {v0, v2}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
:try_end_73
.catchall {:try_start_4e .. :try_end_73} :catchall_e0
.line 87
monitor-exit v3
return v5
.line 90
:cond_75
:try_start_75
iget-object v4, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g:Landroid/os/HandlerThread;
if-nez v4, :cond_82
const-string v0, "AndroidScreenCapture"
const-string v2, "buildScreenCapture: thread is null"
.line 7071
invoke-static {v0, v2}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
:try_end_80
.catchall {:try_start_75 .. :try_end_80} :catchall_e0
.line 92
monitor-exit v3
return v5
.line 7160
:cond_82
:try_start_82
iget v4, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->a:I
.line 7161
iget v5, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->b:I
.line 7162
iget v6, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->c:I
const/16 v7, 0xa
.line 95
invoke-static {v4, v5, v6, v7}, Landroid/media/ImageReader;->newInstance(IIII)Landroid/media/ImageReader;
move-result-object v4
iput-object v4, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->b:Landroid/media/ImageReader;
if-nez v4, :cond_95
.line 96
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_95
new-instance v5, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;
invoke-direct {v5, v1}, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$b;-><init>(Lcom/imo/android/imoim/rooms/sharescreen/capture/a;)V
check-cast v5, Landroid/media/ImageReader$OnImageAvailableListener;
new-instance v6, Landroid/os/Handler;
iget-object v7, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g:Landroid/os/HandlerThread;
if-nez v7, :cond_a5
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_a5
invoke-virtual {v7}, Landroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
move-result-object v7
invoke-direct {v6, v7}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
invoke-virtual {v4, v5, v6}, Landroid/media/ImageReader;->setOnImageAvailableListener(Landroid/media/ImageReader$OnImageAvailableListener;Landroid/os/Handler;)V
.line 97
iget-object v8, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
if-nez v8, :cond_b6
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_b6
const-string v9, "AndroidScreenCapture"
.line 8160
iget v10, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->a:I
.line 8161
iget v11, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->b:I
.line 8163
iget v12, v0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a$a;->d:I
const/16 v13, 0x10
.line 98
iget-object v0, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->b:Landroid/media/ImageReader;
if-nez v0, :cond_c7
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_c7
invoke-virtual {v0}, Landroid/media/ImageReader;->getSurface()Landroid/view/Surface;
move-result-object v14
const/4 v15, 0x0
const/16 v16, 0x0
.line 97
invoke-virtual/range {v8 .. v16}, Landroid/media/projection/MediaProjection;->createVirtualDisplay(Ljava/lang/String;IIIILandroid/view/Surface;Landroid/hardware/display/VirtualDisplay$Callback;Landroid/os/Handler;)Landroid/hardware/display/VirtualDisplay;
move-result-object v0
iput-object v0, v1, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->e:Landroid/hardware/display/VirtualDisplay;
.line 99
sget-object v0, Lkotlin/w;->a:Lkotlin/w;
:try_end_d6
.catchall {:try_start_82 .. :try_end_d6} :catchall_e0
.line 79
monitor-exit v3
return v2
.line 80
:cond_d8
:try_start_d8
new-instance v0, Lkotlin/TypeCastException;
const-string v2, "null cannot be cast to non-null type android.media.projection.MediaProjectionManager"
invoke-direct {v0, v2}, Lkotlin/TypeCastException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_e0
.catchall {:try_start_d8 .. :try_end_e0} :catchall_e0
:catchall_e0
move-exception v0
.line 79
monitor-exit v3
throw v0
.line 3133
:cond_e3
new-instance v0, Lkotlin/TypeCastException;
const-string v2, "null cannot be cast to non-null type android.view.WindowManager"
invoke-direct {v0, v2}, Lkotlin/TypeCastException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private final g()V
.registers 3
.line 105
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "releaseScreenCapture: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->e:Landroid/hardware/display/VirtualDisplay;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "AndroidScreenCapture"
.line 9071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 106
iget-object v0, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->e:Landroid/hardware/display/VirtualDisplay;
if-nez v0, :cond_21
const-string v0, "AndroidScreenCapture"
const-string v1, "releaseScreenCapture: already release"
.line 10071
invoke-static {v0, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 111
:cond_21
iget-object v0, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->a:Ljava/lang/Object;
monitor-enter v0
.line 112
:try_start_24
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->e:Landroid/hardware/display/VirtualDisplay;
if-eqz v1, :cond_32
.line 113
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->e:Landroid/hardware/display/VirtualDisplay;
if-nez v1, :cond_2f
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_2f
invoke-virtual {v1}, Landroid/hardware/display/VirtualDisplay;->release()V
.line 115
:cond_32
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
if-eqz v1, :cond_40
.line 116
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
if-nez v1, :cond_3d
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_3d
invoke-virtual {v1}, Landroid/media/projection/MediaProjection;->stop()V
.line 118
:cond_40
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->b:Landroid/media/ImageReader;
if-eqz v1, :cond_4e
.line 119
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->b:Landroid/media/ImageReader;
if-nez v1, :cond_4b
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_4b
invoke-virtual {v1}, Landroid/media/ImageReader;->close()V
:cond_4e
const/4 v1, 0x0
.line 121
iput-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->e:Landroid/hardware/display/VirtualDisplay;
.line 122
iput-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
.line 123
iput-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->b:Landroid/media/ImageReader;
.line 124
iput-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->c:[I
.line 125
sget-object v1, Lkotlin/w;->a:Lkotlin/w;
:try_end_59
.catchall {:try_start_24 .. :try_end_59} :catchall_5b
.line 111
monitor-exit v0
return-void
:catchall_5b
move-exception v1
monitor-exit v0
throw v1
.end method
# virtual methods
.method public final a(Landroid/content/Intent;)V
.registers 4
const-string v0, "resultIntent"
invoke-static {p1, v0}, Lkotlin/f/b/o;->b(Ljava/lang/Object;Ljava/lang/String;)V
.line 141
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "init: unInit="
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g:Landroid/os/HandlerThread;
if-nez v1, :cond_12
const/4 v1, 0x1
goto :goto_13
:cond_12
const/4 v1, 0x0
:goto_13
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "AndroidScreenCapture"
.line 11071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 142
iget-object v0, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g:Landroid/os/HandlerThread;
if-nez v0, :cond_34
.line 143
iput-object p1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->d:Landroid/content/Intent;
.line 144
new-instance p1, Landroid/os/HandlerThread;
invoke-direct {p1, v1}, Landroid/os/HandlerThread;-><init>(Ljava/lang/String;)V
iput-object p1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g:Landroid/os/HandlerThread;
if-nez p1, :cond_31
.line 145
invoke-static {}, Lkotlin/f/b/o;->a()V
:cond_31
invoke-virtual {p1}, Landroid/os/HandlerThread;->start()V
:cond_34
return-void
.end method
.method public final a()Z
.registers 3
const-string v0, "AndroidScreenCapture"
const-string v1, "createScreenCapture: "
.line 1071
invoke-static {v0, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 46
invoke-direct {p0}, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f()Z
move-result v0
if-eqz v0, :cond_f
const/4 v0, 0x1
return v0
:cond_f
const/4 v0, 0x0
return v0
.end method
.method public final b()V
.registers 3
const-string v0, "AndroidScreenCapture"
const-string v1, "destroyScreenCapture: "
.line 2071
invoke-static {v0, v1}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 55
invoke-direct {p0}, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g()V
const/4 v0, 0x0
.line 56
iput-object v0, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->d:Landroid/content/Intent;
.line 57
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g:Landroid/os/HandlerThread;
if-eqz v1, :cond_14
.line 58
invoke-virtual {v1}, Landroid/os/HandlerThread;->quitSafely()Z
.line 60
:cond_14
iput-object v0, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->g:Landroid/os/HandlerThread;
return-void
.end method
.method public final c()Z
.registers 3
.line 65
iget-object v0, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->a:Ljava/lang/Object;
monitor-enter v0
.line 66
:try_start_3
iget-object v1, p0, Lcom/imo/android/imoim/rooms/sharescreen/capture/a;->f:Landroid/media/projection/MediaProjection;
:try_end_5
.catchall {:try_sta