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