AlbumBitmapCacheHelper.smali

.class public Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;
.super Ljava/lang/Object;
.source "AlbumBitmapCacheHelper.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$ILoadImageCallback;
    }
.end annotation


# static fields
.field private static final TAG:Ljava/lang/String; = "AlbumBitmapCacheHelper"

.field private static cacheSize:I

.field private static volatile instance:Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;


# instance fields
.field private cache:Lb/a/g;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lb/a/g<",
            "Ljava/lang/String;",
            "Landroid/graphics/Bitmap;",
            ">;"
        }
    .end annotation
.end field

.field private currentShowString:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation
.end field

.field private mContext:Landroid/content/Context;

.field tpe:Ljava/util/concurrent/ThreadPoolExecutor;


# direct methods
.method static constructor <clinit>()V
    .registers 0

    return-void
.end method

.method private constructor <init>()V
    .registers 9

    .line 1
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 2
    new-instance v7, Ljava/util/concurrent/ThreadPoolExecutor;

    sget-object v5, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;

    new-instance v6, Ljava/util/concurrent/LinkedBlockingQueue;

    invoke-direct {v6}, Ljava/util/concurrent/LinkedBlockingQueue;-><init>()V

    const/4 v1, 0x2

    const/4 v2, 0x5

    const-wide/16 v3, 0xa

    move-object v0, v7

    invoke-direct/range {v0 .. v6}, Ljava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V

    iput-object v7, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->tpe:Ljava/util/concurrent/ThreadPoolExecutor;

    .line 3
    new-instance v0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$1;

    sget v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cacheSize:I

    invoke-direct {v0, p0, v1}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$1;-><init>(Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;I)V

    iput-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    .line 4
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    iput-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->currentShowString:Ljava/util/ArrayList;

    return-void
.end method

.method static synthetic access$000(Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;)Ljava/util/ArrayList;
    .registers 1

    .line 1
    iget-object p0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->currentShowString:Ljava/util/ArrayList;

    return-object p0
.end method

.method static synthetic access$100(Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;)Lb/a/g;
    .registers 1

    .line 1
    iget-object p0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    return-object p0
.end method

.method static synthetic access$200(Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;Ljava/lang/String;II)Landroid/graphics/Bitmap;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/OutOfMemoryError;
        }
    .end annotation

    .line 1
    invoke-direct {p0, p1, p2, p3}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->getBitmap(Ljava/lang/String;II)Landroid/graphics/Bitmap;

    move-result-object p0

    return-object p0
.end method

.method static synthetic access$300(Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;)Landroid/content/Context;
    .registers 1

    .line 1
    iget-object p0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    return-object p0
.end method

.method private static calculateMemoryCacheSize(Landroid/content/Context;)I
    .registers 5

    const-string v0, "activity"

    .line 1
    invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/ActivityManager;

    .line 2
    invoke-virtual {p0}, Landroid/content/Context;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;

    move-result-object p0

    iget p0, p0, Landroid/content/pm/ApplicationInfo;->flags:I

    const/high16 v1, 0x100000

    and-int/2addr p0, v1

    if-eqz p0, :cond_15

    const/4 p0, 0x1

    goto :goto_16

    :cond_15
    const/4 p0, 0x0

    .line 3
    :goto_16
    invoke-virtual {v0}, Landroid/app/ActivityManager;->getMemoryClass()I

    move-result v1

    if-eqz p0, :cond_20

    .line 4
    invoke-virtual {v0}, Landroid/app/ActivityManager;->getLargeMemoryClass()I

    move-result v1

    :cond_20
    const-wide/32 v2, 0x100000

    int-to-long v0, v1

    mul-long v0, v0, v2

    const-wide/16 v2, 0x8

    .line 5
    div-long/2addr v0, v2

    long-to-int p0, v0

    return p0
.end method

.method public static centerSquareScaleBitmap(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
    .registers 4

    if-eqz p0, :cond_28

    if-gtz p1, :cond_5

    goto :goto_28

    .line 1
    :cond_5
    invoke-virtual {p0}, Landroid/graphics/Bitmap;->getWidth()I

    move-result v0

    .line 2
    invoke-virtual {p0}, Landroid/graphics/Bitmap;->getHeight()I

    move-result v1

    sub-int/2addr v0, p1

    .line 3
    div-int/lit8 v0, v0, 0x2

    sub-int/2addr v1, p1

    .line 4
    div-int/lit8 v1, v1, 0x2

    if-nez v0, :cond_18

    if-nez v1, :cond_18

    return-object p0

    .line 5
    :cond_18
    :try_start_18
    invoke-static {p0, v0, v1, p1, p1}, Landroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap;

    move-result-object p1
    :try_end_1c
    .catch Ljava/lang/OutOfMemoryError; {:try_start_18 .. :try_end_1c} :catch_26

    .line 6
    :try_start_1c
    invoke-virtual {p0}, Landroid/graphics/Bitmap;->isRecycled()Z

    move-result v0

    if-nez v0, :cond_25

    .line 7
    invoke-virtual {p0}, Landroid/graphics/Bitmap;->recycle()V
    :try_end_25
    .catch Ljava/lang/OutOfMemoryError; {:try_start_1c .. :try_end_25} :catch_27

    :cond_25
    return-object p1

    :catch_26
    move-object p1, p0

    :catch_27
    return-object p1

    :cond_28
    :goto_28
    const/4 p0, 0x0

    return-object p0
.end method

.method private clearCache()V
    .registers 2

    .line 1
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    invoke-virtual {v0}, Lb/a/g;->evictAll()V

    const/4 v0, 0x0

    .line 2
    iput-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    .line 3
    iput-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->tpe:Ljava/util/concurrent/ThreadPoolExecutor;

    .line 4
    sput-object v0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->instance:Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    return-void
.end method

.method private computeScale(Landroid/graphics/BitmapFactory$Options;II)I
    .registers 6

    const/4 v0, 0x1

    if-nez p1, :cond_4

    return v0

    .line 1
    :cond_4
    iget v1, p1, Landroid/graphics/BitmapFactory$Options;->outWidth:I

    int-to-float v1, v1

    int-to-float p2, p2

    div-float/2addr v1, p2

    float-to-int p2, v1

    .line 2
    iget p1, p1, Landroid/graphics/BitmapFactory$Options;->outHeight:I

    int-to-float p1, p1

    int-to-float p3, p3

    div-float/2addr p1, p3

    float-to-int p1, p1

    if-le p2, p1, :cond_13

    move p1, p2

    :cond_13
    if-ge p1, v0, :cond_16

    const/4 p1, 0x1

    :cond_16
    return p1
.end method

.method private varargs decodeBitmapFromPath(Ljava/lang/String;IILio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$ILoadImageCallback;[Ljava/lang/Object;)V
    .registers 12
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/OutOfMemoryError;
        }
    .end annotation

    .line 1
    new-instance v5, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$2;

    invoke-direct {v5, p0, p4, p1, p5}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$2;-><init>(Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$ILoadImageCallback;Ljava/lang/String;[Ljava/lang/Object;)V

    .line 2
    iget-object p4, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->tpe:Ljava/util/concurrent/ThreadPoolExecutor;

    new-instance p5, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$3;

    move-object v0, p5

    move-object v1, p0

    move-object v2, p1

    move v3, p2

    move v4, p3

    invoke-direct/range {v0 .. v5}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$3;-><init>(Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;Ljava/lang/String;IILandroid/os/Handler;)V

    invoke-virtual {p4, p5}, Ljava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V

    return-void
.end method

.method private getBitmap(Ljava/lang/String;II)Landroid/graphics/Bitmap;
    .registers 28
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/OutOfMemoryError;
        }
    .end annotation

    move-object/from16 v1, p0

    move-object/from16 v2, p1

    const-string v0, "window"

    const-string v3, "getBitmap"

    const-string v4, "AlbumBitmapCacheHelper"

    .line 4
    :try_start_a
    new-instance v6, Landroid/graphics/BitmapFactory$Options;

    invoke-direct {v6}, Landroid/graphics/BitmapFactory$Options;-><init>()V

    const/4 v7, 0x1

    .line 5
    iput-boolean v7, v6, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z

    .line 6
    sget-object v8, Landroid/graphics/Bitmap$Config;->RGB_565:Landroid/graphics/Bitmap$Config;

    iput-object v8, v6, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config;

    .line 7
    iget-object v8, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-static {v8}, Lio/rong/imkit/utilities/KitStorageUtils;->isBuildAndTargetForQ(Landroid/content/Context;)Z

    move-result v8
    :try_end_1c
    .catch Ljava/io/IOException; {:try_start_a .. :try_end_1c} :catch_203
    .catch Ljava/lang/IllegalArgumentException; {:try_start_a .. :try_end_1c} :catch_1fc

    const-string v9, "r"

    if-eqz v8, :cond_51

    .line 8
    :try_start_20
    invoke-static/range {p1 .. p1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v8

    invoke-static {v8}, Lio/rong/common/FileUtils;->uriStartWithContent(Landroid/net/Uri;)Z

    move-result v8

    if-nez v8, :cond_30

    .line 9
    new-instance v8, Landroid/media/ExifInterface;

    invoke-direct {v8, v2}, Landroid/media/ExifInterface;-><init>(Ljava/lang/String;)V

    goto :goto_56

    .line 10
    :cond_30
    iget-object v8, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v8

    invoke-static/range {p1 .. p1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v10

    invoke-virtual {v8, v10, v9}, Landroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;

    move-result-object v8

    .line 11
    new-instance v10, Landroid/media/ExifInterface;

    invoke-virtual {v8}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;

    move-result-object v8

    invoke-direct {v10, v8}, Landroid/media/ExifInterface;-><init>(Ljava/io/FileDescriptor;)V
    :try_end_47
    .catch Ljava/io/IOException; {:try_start_20 .. :try_end_47} :catch_4d
    .catch Ljava/lang/IllegalArgumentException; {:try_start_20 .. :try_end_47} :catch_49

    move-object v8, v10

    goto :goto_56

    :catch_49
    move-exception v0

    const/4 v2, 0x0

    goto/16 :goto_1ff

    :catch_4d
    move-exception v0

    const/4 v2, 0x0

    goto/16 :goto_206

    .line 12
    :cond_51
    :try_start_51
    new-instance v8, Landroid/media/ExifInterface;

    invoke-direct {v8, v2}, Landroid/media/ExifInterface;-><init>(Ljava/lang/String;)V

    :goto_56
    const-string v10, "Orientation"

    const/4 v11, 0x0

    .line 13
    invoke-virtual {v8, v10, v11}, Landroid/media/ExifInterface;->getAttributeInt(Ljava/lang/String;I)I

    move-result v8
    :try_end_5d
    .catch Ljava/io/IOException; {:try_start_51 .. :try_end_5d} :catch_203
    .catch Ljava/lang/IllegalArgumentException; {:try_start_51 .. :try_end_5d} :catch_1fc

    const-string v10, "sampleSize:"

    const/4 v12, 0x7

    const/4 v13, 0x5

    const/16 v14, 0x8

    const/4 v15, 0x6

    if-nez p2, :cond_a3

    if-nez p3, :cond_a3

    .line 14
    :try_start_68
    iget-object v7, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-virtual {v7, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v7

    check-cast v7, Landroid/view/WindowManager;

    invoke-interface {v7}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;

    move-result-object v7

    invoke-virtual {v7}, Landroid/view/Display;->getWidth()I

    move-result v7

    iget-object v5, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    .line 15
    invoke-virtual {v5, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/view/WindowManager;

    invoke-interface {v0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;

    move-result-object v0

    invoke-virtual {v0}, Landroid/view/Display;->getHeight()I

    move-result v0

    .line 16
    invoke-direct {v1, v6, v7, v0}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->computeScale(Landroid/graphics/BitmapFactory$Options;II)I

    move-result v0

    .line 17
    new-instance v5, Ljava/lang/StringBuilder;

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

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

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

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

    move-result-object v5

    invoke-static {v4, v5}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
    :try_end_9e
    .catch Ljava/io/IOException; {:try_start_68 .. :try_end_9e} :catch_4d
    .catch Ljava/lang/IllegalArgumentException; {:try_start_68 .. :try_end_9e} :catch_49

    move/from16 v5, p2

    move/from16 v7, p3

    goto :goto_d1

    :cond_a3
    if-eq v8, v15, :cond_b1

    if-eq v8, v14, :cond_b1

    if-eq v8, v13, :cond_b1

    if-ne v8, v12, :cond_ac

    goto :goto_b1

    :cond_ac
    move/from16 v0, p2

    move/from16 v5, p3

    goto :goto_b5

    :cond_b1
    :goto_b1
    move/from16 v5, p2

    move/from16 v0, p3

    .line 18
    :goto_b5
    :try_start_b5
    invoke-direct {v1, v6, v0, v5}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->computeScale(Landroid/graphics/BitmapFactory$Options;II)I

    move-result v7

    .line 19
    new-instance v12, Ljava/lang/StringBuilder;

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

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

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

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

    move-result-object v10

    invoke-static {v4, v10}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
    :try_end_cb
    .catch Ljava/io/IOException; {:try_start_b5 .. :try_end_cb} :catch_203
    .catch Ljava/lang/IllegalArgumentException; {:try_start_b5 .. :try_end_cb} :catch_1fc

    move/from16 v23, v5

    move v5, v0

    move v0, v7

    move/from16 v7, v23

    .line 20
    :goto_d1
    :try_start_d1
    new-instance v10, Landroid/graphics/BitmapFactory$Options;

    invoke-direct {v10}, Landroid/graphics/BitmapFactory$Options;-><init>()V
    :try_end_d6
    .catch Ljava/lang/OutOfMemoryError; {:try_start_d1 .. :try_end_d6} :catch_111
    .catch Ljava/io/IOException; {:try_start_d1 .. :try_end_d6} :catch_4d
    .catch Ljava/lang/IllegalArgumentException; {:try_start_d1 .. :try_end_d6} :catch_49

    .line 21
    :try_start_d6
    iput-boolean v11, v10, Landroid/graphics/BitmapFactory$Options;->inJustDecodeBounds:Z

    .line 22
    iput v0, v10, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I

    .line 23
    iget-object v0, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-static {v0}, Lio/rong/imkit/utilities/KitStorageUtils;->isBuildAndTargetForQ(Landroid/content/Context;)Z

    move-result v0

    if-eqz v0, :cond_109

    .line 24
    invoke-static/range {p1 .. p1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v0

    invoke-static {v0}, Lio/rong/common/FileUtils;->uriStartWithContent(Landroid/net/Uri;)Z

    move-result v0

    if-nez v0, :cond_f1

    .line 25
    invoke-static {v2, v10}, Landroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;

    move-result-object v0

    goto :goto_10d

    .line 26
    :cond_f1
    iget-object v0, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v0

    invoke-static/range {p1 .. p1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v6

    invoke-virtual {v0, v6, v9}, Landroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;

    move-result-object v0

    .line 27
    invoke-virtual {v0}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;

    move-result-object v0

    const/4 v6, 0x0

    invoke-static {v0, v6, v10}, Landroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;

    move-result-object v0

    goto :goto_10d

    .line 28
    :cond_109
    invoke-static {v2, v10}, Landroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;

    move-result-object v0
    :try_end_10d
    .catch Ljava/lang/OutOfMemoryError; {:try_start_d6 .. :try_end_10d} :catch_10f
    .catch Ljava/io/IOException; {:try_start_d6 .. :try_end_10d} :catch_4d
    .catch Ljava/lang/IllegalArgumentException; {:try_start_d6 .. :try_end_10d} :catch_49

    :goto_10d
    move-object v2, v0

    goto :goto_153

    :catch_10f
    move-exception v0

    goto :goto_113

    :catch_111
    move-exception v0

    move-object v10, v6

    .line 29
    :goto_113
    :try_start_113
    invoke-static {v4, v3, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    .line 30
    iget v0, v10, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I

    const/4 v6, 0x1

    shl-int/2addr v0, v6

    iput v0, v10, Landroid/graphics/BitmapFactory$Options;->inSampleSize:I

    .line 31
    iget-object v0, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-static {v0}, Lio/rong/imkit/utilities/KitStorageUtils;->isBuildAndTargetForQ(Landroid/content/Context;)Z

    move-result v0

    if-eqz v0, :cond_14d

    .line 32
    iget-object v0, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-static {v0}, Lio/rong/imkit/utilities/KitStorageUtils;->getImageSavePath(Landroid/content/Context;)Ljava/lang/String;

    move-result-object v0

    .line 33
    invoke-virtual {v2, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v0
    :try_end_12e
    .catch Ljava/io/IOException; {:try_start_113 .. :try_end_12e} :catch_203
    .catch Ljava/lang/IllegalArgumentException; {:try_start_113 .. :try_end_12e} :catch_1fc

    if-eqz v0, :cond_135

    .line 34
    :try_start_130
    invoke-static {v2, v10}, Landroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;

    move-result-object v0
    :try_end_134
    .catch Ljava/io/IOException; {:try_start_130 .. :try_end_134} :catch_4d
    .catch Ljava/lang/IllegalArgumentException; {:try_start_130 .. :try_end_134} :catch_49

    goto :goto_10d

    .line 35
    :cond_135
    :try_start_135
    iget-object v0, v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v0

    invoke-static/range {p1 .. p1}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v2

    invoke-virtual {v0, v2, v9}, Landroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;

    move-result-object v0

    .line 36
    invoke-virtual {v0}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;

    move-result-object v0
    :try_end_147
    .catch Ljava/io/IOException; {:try_start_135 .. :try_end_147} :catch_203
    .catch Ljava/lang/IllegalArgumentException; {:try_start_135 .. :try_end_147} :catch_1fc

    const/4 v6, 0x0

    :try_start_148
    invoke-static {v0, v6, v10}, Landroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;

    move-result-object v0

    goto :goto_10d

    :cond_14d
    const/4 v6, 0x0

    .line 37
    invoke-static {v2, v10}, Landroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;

    move-result-object v0
    :try_end_152
    .catch Ljava/io/IOException; {:try_start_148 .. :try_end_152} :catch_1fa
    .catch Ljava/lang/IllegalArgumentException; {:try_start_148 .. :try_end_152} :catch_1f8

    goto :goto_10d

    .line 38
    :goto_153
    :try_start_153
    new-instance v0, Landroid/graphics/Matrix;

    invoke-direct {v0}, Landroid/graphics/Matrix;-><init>()V

    if-eqz v2, :cond_209

    .line 39
    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getWidth()I

    move-result v6

    .line 40
    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getHeight()I

    move-result v9

    if-eq v8, v15, :cond_16b

    if-eq v8, v14, :cond_16b

    if-eq v8, v13, :cond_16b

    const/4 v10, 0x7

    if-ne v8, v10, :cond_170

    :cond_16b
    move/from16 v23, v9

    move v9, v6

    move/from16 v6, v23

    :cond_170
    const/high16 v10, 0x3f800000    # 1.0f

    const/high16 v11, -0x40800000    # -1.0f

    const/high16 v12, 0x40000000    # 2.0f

    packed-switch v8, :pswitch_data_20a

    goto :goto_1b9

    :pswitch_17a
    const/high16 v8, 0x43870000    # 270.0f

    int-to-float v6, v6

    div-float/2addr v6, v12

    int-to-float v9, v9

    div-float/2addr v9, v12

    .line 41
    invoke-virtual {v0, v8, v6, v9}, Landroid/graphics/Matrix;->setRotate(FFF)V

    goto :goto_1b9

    :pswitch_184
    const/high16 v8, 0x43870000    # 270.0f

    int-to-float v6, v6

    div-float/2addr v6, v12

    int-to-float v9, v9

    div-float/2addr v9, v12

    .line 42
    invoke-virtual {v0, v8, v6, v9}, Landroid/graphics/Matrix;->setRotate(FFF)V

    .line 43
    invoke-virtual {v0, v10, v11}, Landroid/graphics/Matrix;->preScale(FF)Z

    goto :goto_1b9

    :pswitch_191
    const/high16 v8, 0x42b40000    # 90.0f

    int-to-float v6, v6

    div-float/2addr v6, v12

    int-to-float v9, v9

    div-float/2addr v9, v12

    .line 44
    invoke-virtual {v0, v8, v6, v9}, Landroid/graphics/Matrix;->setRotate(FFF)V

    goto :goto_1b9

    :pswitch_19b
    const/high16 v8, 0x42b40000    # 90.0f

    int-to-float v6, v6

    div-float/2addr v6, v12

    int-to-float v9, v9

    div-float/2addr v9, v12

    .line 45
    invoke-virtual {v0, v8, v6, v9}, Landroid/graphics/Matrix;->setRotate(FFF)V

    .line 46
    invoke-virtual {v0, v10, v11}, Landroid/graphics/Matrix;->preScale(FF)Z

    goto :goto_1b9

    .line 47
    :pswitch_1a8
    invoke-virtual {v0, v10, v11}, Landroid/graphics/Matrix;->preScale(FF)Z

    goto :goto_1b9

    :pswitch_1ac
    const/high16 v8, 0x43340000    # 180.0f

    int-to-float v6, v6

    div-float/2addr v6, v12

    int-to-float v9, v9

    div-float/2addr v9, v12

    .line 48
    invoke-virtual {v0, v8, v6, v9}, Landroid/graphics/Matrix;->setRotate(FFF)V

    goto :goto_1b9

    .line 49
    :pswitch_1b6
    invoke-virtual {v0, v11, v10}, Landroid/graphics/Matrix;->preScale(FF)Z

    :goto_1b9
    if-eqz v5, :cond_1d8

    if-nez v7, :cond_1be

    goto :goto_1d8

    :cond_1be
    int-to-float v5, v5

    .line 50
    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getWidth()I

    move-result v6

    int-to-float v6, v6

    div-float/2addr v5, v6

    int-to-float v6, v7

    .line 51
    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getHeight()I

    move-result v7

    int-to-float v7, v7

    div-float/2addr v6, v7

    .line 52
    invoke-static {v5, v6}, Ljava/lang/Math;->min(FF)F

    move-result v7

    invoke-static {v5, v6}, Ljava/lang/Math;->min(FF)F

    move-result v5

    invoke-virtual {v0, v7, v5}, Landroid/graphics/Matrix;->postScale(FF)Z

    goto :goto_1dd

    :cond_1d8
    :goto_1d8
    const-string v5, "widthLimit or heightLimit is 0"

    .line 53
    invoke-static {v4, v5}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I

    :goto_1dd
    const/16 v17, 0x0

    const/16 v18, 0x0

    .line 54
    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getWidth()I

    move-result v19

    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getHeight()I

    move-result v20

    const/16 v22, 0x1

    move-object/from16 v16, v2

    move-object/from16 v21, v0

    invoke-static/range {v16 .. v22}, Landroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap;

    move-result-object v2
    :try_end_1f3
    .catch Ljava/io/IOException; {:try_start_153 .. :try_end_1f3} :catch_1f6
    .catch Ljava/lang/IllegalArgumentException; {:try_start_153 .. :try_end_1f3} :catch_1f4

    goto :goto_209

    :catch_1f4
    move-exception v0

    goto :goto_1ff

    :catch_1f6
    move-exception v0

    goto :goto_206

    :catch_1f8
    move-exception v0

    goto :goto_1fe

    :catch_1fa
    move-exception v0

    goto :goto_205

    :catch_1fc
    move-exception v0

    const/4 v6, 0x0

    :goto_1fe
    move-object v2, v6

    .line 55
    :goto_1ff
    invoke-static {v4, v3, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    goto :goto_209

    :catch_203
    move-exception v0

    const/4 v6, 0x0

    :goto_205
    move-object v2, v6

    .line 56
    :goto_206
    invoke-static {v4, v3, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    :cond_209
    :goto_209
    return-object v2

    :pswitch_data_20a
    .packed-switch 0x2
        :pswitch_1b6
        :pswitch_1ac
        :pswitch_1a8
        :pswitch_19b
        :pswitch_191
        :pswitch_184
        :pswitch_17a
    .end packed-switch
.end method

.method private getBitmapFromCache(Ljava/lang/String;II)Landroid/graphics/Bitmap;
    .registers 6

    .line 1
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    new-instance v1, Ljava/lang/StringBuilder;

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

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

    const-string p1, "_"

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

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

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

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

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

    move-result-object p1

    invoke-virtual {v0, p1}, Lb/a/g;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p1

    check-cast p1, Landroid/graphics/Bitmap;

    return-object p1
.end method

.method public static getInstance()Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;
    .registers 2

    .line 1
    sget-object v0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->instance:Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    if-nez v0, :cond_17

    .line 2
    const-class v0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    monitor-enter v0

    .line 3
    :try_start_7
    sget-object v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->instance:Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    if-nez v1, :cond_12

    .line 4
    new-instance v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    invoke-direct {v1}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;-><init>()V

    sput-object v1, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->instance:Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    .line 5
    :cond_12
    monitor-exit v0

    goto :goto_17

    :catchall_14
    move-exception v1

    monitor-exit v0
    :try_end_16
    .catchall {:try_start_7 .. :try_end_16} :catchall_14

    throw v1

    .line 6
    :cond_17
    :goto_17
    sget-object v0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->instance:Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    return-object v0
.end method

.method public static init(Landroid/content/Context;)V
    .registers 3

    const-string v0, "AlbumBitmapCacheHelper"

    const-string v1, "init"

    .line 1
    invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 2
    invoke-static {p0}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->calculateMemoryCacheSize(Landroid/content/Context;)I

    move-result v0

    sput v0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cacheSize:I

    .line 3
    invoke-static {}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->getInstance()Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;

    move-result-object v0

    .line 4
    invoke-virtual {p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object p0

    iput-object p0, v0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->mContext:Landroid/content/Context;

    return-void
.end method


# virtual methods
.method public addPathToShowlist(Ljava/lang/String;)V
    .registers 3

    .line 1
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->currentShowString:Ljava/util/ArrayList;

    invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    return-void
.end method

.method public varargs getBitmap(Ljava/lang/String;IILio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$ILoadImageCallback;[Ljava/lang/Object;)Landroid/graphics/Bitmap;
    .registers 7

    .line 1
    invoke-direct {p0, p1, p2, p3}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->getBitmapFromCache(Ljava/lang/String;II)Landroid/graphics/Bitmap;

    move-result-object v0

    if-eqz v0, :cond_e

    const-string p1, "AlbumBitmapCacheHelper"

    const-string p2, "getBitmap from cache"

    .line 2
    invoke-static {p1, p2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    goto :goto_11

    .line 3
    :cond_e
    invoke-direct/range {p0 .. p5}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->decodeBitmapFromPath(Ljava/lang/String;IILio/rong/imkit/plugin/image/AlbumBitmapCacheHelper$ILoadImageCallback;[Ljava/lang/Object;)V

    :goto_11
    return-object v0
.end method

.method public releaseAllSizeCache()V
    .registers 3

    .line 1
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    invoke-virtual {v0}, Lb/a/g;->evictAll()V

    .line 2
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    const/4 v1, 0x1

    invoke-virtual {v0, v1}, Lb/a/g;->resize(I)V

    return-void
.end method

.method public releaseHalfSizeCache()V
    .registers 6

    .line 1
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/Runtime;->maxMemory()J

    move-result-wide v1

    const-wide/16 v3, 0x400

    div-long/2addr v1, v3

    const-wide/16 v3, 0x8

    div-long/2addr v1, v3

    long-to-int v2, v1

    invoke-virtual {v0, v2}, Lb/a/g;->resize(I)V

    return-void
.end method

.method public removePathFromShowlist(Ljava/lang/String;)V
    .registers 3

    .line 1
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->currentShowString:Ljava/util/ArrayList;

    invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z

    return-void
.end method

.method public resizeCache()V
    .registers 6

    .line 1
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->cache:Lb/a/g;

    invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/Runtime;->maxMemory()J

    move-result-wide v1

    const-wide/16 v3, 0x400

    div-long/2addr v1, v3

    const-wide/16 v3, 0x4

    div-long/2addr v1, v3

    long-to-int v2, v1

    invoke-virtual {v0, v2}, Lb/a/g;->resize(I)V

    return-void
.end method

.method public uninit()V
    .registers 3

    const-string v0, "AlbumBitmapCacheHelper"

    const-string v1, "uninit"

    .line 1
    invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I

    .line 2
    iget-object v0, p0, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->tpe:Ljava/util/concurrent/ThreadPoolExecutor;

    invoke-virtual {v0}, Ljava/util/concurrent/ThreadPoolExecutor;->shutdownNow()Ljava/util/List;

    .line 3
    invoke-direct {p0}, Lio/rong/imkit/plugin/image/AlbumBitmapCacheHelper;->clearCache()V

    return-void
.end method