WXViewToImageUtil.smali
.class public Lcom/taobao/weex/utils/WXViewToImageUtil;
.super Ljava/lang/Object;
.source "WXViewToImageUtil.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/taobao/weex/utils/WXViewToImageUtil$OnImageSavedCallback;
}
.end annotation
# static fields
.field public static mBackgroundColor:I
# direct methods
.method static constructor <clinit>()V
.registers 0
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 43
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static generateImage(Landroid/view/View;IILcom/taobao/weex/utils/WXViewToImageUtil$OnImageSavedCallback;)V
.registers 6
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10,
0x10,
0x10,
0x10
}
names = {
"imageView",
"width",
"backgroundColor",
"mOnImageSavedCallback"
}
.end annotation
.line 53
sput p2, Lcom/taobao/weex/utils/WXViewToImageUtil;->mBackgroundColor:I
.line 56
invoke-static {}, Lcom/taobao/weex/WXSDKManager;->getInstance()Lcom/taobao/weex/WXSDKManager;
move-result-object p2
invoke-virtual {p2}, Lcom/taobao/weex/WXSDKManager;->getWXWorkThreadManager()Lcom/taobao/weex/common/WXWorkThreadManager;
move-result-object p2
new-instance v0, Ljava/lang/Thread;
new-instance v1, Lcom/taobao/weex/utils/WXViewToImageUtil$1;
invoke-direct {v1, p0, p1, p3}, Lcom/taobao/weex/utils/WXViewToImageUtil$1;-><init>(Landroid/view/View;ILcom/taobao/weex/utils/WXViewToImageUtil$OnImageSavedCallback;)V
invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
invoke-virtual {p2, v0}, Lcom/taobao/weex/common/WXWorkThreadManager;->post(Ljava/lang/Runnable;)V
return-void
.end method
.method public static getBitmapFromImageView(Landroid/view/View;I)Landroid/graphics/Bitmap;
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10,
0x0
}
names = {
"view",
"width"
}
.end annotation
.line 141
invoke-virtual {p0}, Landroid/view/View;->getWidth()I
move-result v0
if-lez v0, :cond_c
invoke-virtual {p0}, Landroid/view/View;->getHeight()I
move-result v0
if-gtz v0, :cond_25
:cond_c
const/high16 v0, 0x40000000 # 2.0f
.line 142
invoke-static {p1, v0}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I
move-result p1
const/4 v0, 0x0
.line 143
invoke-static {v0, v0}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I
move-result v1
.line 142
invoke-virtual {p0, p1, v1}, Landroid/view/View;->measure(II)V
.line 144
invoke-virtual {p0}, Landroid/view/View;->getMeasuredWidth()I
move-result p1
invoke-virtual {p0}, Landroid/view/View;->getMeasuredHeight()I
move-result v1
invoke-virtual {p0, v0, v0, p1, v1}, Landroid/view/View;->layout(IIII)V
:cond_25
const/4 p1, 0x1
.line 147
invoke-virtual {p0, p1}, Landroid/view/View;->setDrawingCacheEnabled(Z)V
.line 148
invoke-virtual {p0}, Landroid/view/View;->getDrawingCache()Landroid/graphics/Bitmap;
move-result-object p0
return-object p0
.end method
.method public static saveBitmapToGallery(Landroid/content/Context;Landroid/graphics/Bitmap;Lcom/taobao/weex/utils/WXViewToImageUtil$OnImageSavedCallback;)Ljava/lang/String;
.registers 9
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x10
}
names = {
"context",
"bitmap",
"mOnImageSavedCallback"
}
.end annotation
.line 92
new-instance v0, Ljava/io/File;
invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
move-result-object v1
const-string v2, "Weex"
invoke-direct {v0, v1, v2}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 93
invoke-virtual {v0}, Ljava/io/File;->exists()Z
move-result v1
if-nez v1, :cond_14
.line 94
invoke-virtual {v0}, Ljava/io/File;->mkdir()Z
.line 97
:cond_14
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v2
invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v2, ".jpg"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 98
new-instance v2, Ljava/io/File;
invoke-direct {v2, v0, v1}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
.line 101
:try_start_2e
new-instance v3, Ljava/io/FileOutputStream;
invoke-direct {v3, v2}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
.line 102
sget-object v4, Landroid/graphics/Bitmap$CompressFormat;->JPEG:Landroid/graphics/Bitmap$CompressFormat;
const/16 v5, 0x64
invoke-virtual {p1, v4, v5, v3}, Landroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
.line 103
invoke-virtual {v3}, Ljava/io/FileOutputStream;->flush()V
.line 104
invoke-virtual {v3}, Ljava/io/FileOutputStream;->close()V
:try_end_40
.catch Ljava/io/FileNotFoundException; {:try_start_2e .. :try_end_40} :catch_4d
.catch Ljava/io/IOException; {:try_start_2e .. :try_end_40} :catch_41
goto :goto_58
:catch_41
move-exception p1
if-eqz p2, :cond_49
const-string v3, "Android IOException"
.line 111
invoke-interface {p2, v3}, Lcom/taobao/weex/utils/WXViewToImageUtil$OnImageSavedCallback;->onSaveFailed(Ljava/lang/String;)V
.line 112
:cond_49
invoke-virtual {p1}, Ljava/io/IOException;->printStackTrace()V
goto :goto_58
:catch_4d
move-exception p1
if-eqz p2, :cond_55
const-string v3, "Image creation failed due to system reason"
.line 107
invoke-interface {p2, v3}, Lcom/taobao/weex/utils/WXViewToImageUtil$OnImageSavedCallback;->onSaveFailed(Ljava/lang/String;)V
.line 108
:cond_55
invoke-virtual {p1}, Ljava/io/FileNotFoundException;->printStackTrace()V
.line 117
:goto_58
:try_start_58
invoke-virtual {p0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object p1
.line 118
invoke-virtual {v2}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object p2
const/4 v3, 0x0
.line 117
invoke-static {p1, p2, v1, v3}, Landroid/provider/MediaStore$Images$Media;->insertImage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
:try_end_64
.catch Ljava/io/FileNotFoundException; {:try_start_58 .. :try_end_64} :catch_65
goto :goto_69
:catch_65
move-exception p1
.line 120
invoke-virtual {p1}, Ljava/io/FileNotFoundException;->printStackTrace()V
.line 124
:goto_69
new-instance p1, Landroid/content/Intent;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "file://"
invoke-virtual {p2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v0
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, "/"
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
move-result-object p2
const-string v0, "android.intent.action.MEDIA_SCANNER_SCAN_FILE"
invoke-direct {p1, v0, p2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
invoke-virtual {p0, p1}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;)V
.line 126
invoke-virtual {v2}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object p0
return-object p0
.end method