修复系统分享图片的接收功能。
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun Dec 21 11:22:23 HKT 2025
|
#Sun Dec 21 05:35:44 GMT 2025
|
||||||
stageCount=15
|
stageCount=15
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=15.14
|
baseVersion=15.14
|
||||||
publishVersion=15.14.14
|
publishVersion=15.14.14
|
||||||
buildCount=0
|
buildCount=6
|
||||||
baseBetaVersion=15.14.15
|
baseBetaVersion=15.14.15
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import android.content.DialogInterface;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -24,10 +23,10 @@ import androidx.core.content.ContextCompat;
|
|||||||
import androidx.core.content.FileProvider;
|
import androidx.core.content.FileProvider;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.libappbase.ToastUtils;
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
import cc.winboll.studio.powerbell.App;
|
|
||||||
import cc.winboll.studio.powerbell.R;
|
import cc.winboll.studio.powerbell.R;
|
||||||
import cc.winboll.studio.powerbell.dialogs.BackgroundPicturePreviewDialog;
|
import cc.winboll.studio.powerbell.dialogs.BackgroundPicturePreviewDialog;
|
||||||
import cc.winboll.studio.powerbell.dialogs.ColorPaletteDialog;
|
import cc.winboll.studio.powerbell.dialogs.ColorPaletteDialog;
|
||||||
|
import cc.winboll.studio.powerbell.dialogs.NetworkBackgroundDialog;
|
||||||
import cc.winboll.studio.powerbell.dialogs.YesNoAlertDialog;
|
import cc.winboll.studio.powerbell.dialogs.YesNoAlertDialog;
|
||||||
import cc.winboll.studio.powerbell.models.BackgroundBean;
|
import cc.winboll.studio.powerbell.models.BackgroundBean;
|
||||||
import cc.winboll.studio.powerbell.utils.BackgroundSourceUtils;
|
import cc.winboll.studio.powerbell.utils.BackgroundSourceUtils;
|
||||||
@@ -37,8 +36,6 @@ import cc.winboll.studio.powerbell.utils.ImageCropUtils;
|
|||||||
import cc.winboll.studio.powerbell.utils.UriUtils;
|
import cc.winboll.studio.powerbell.utils.UriUtils;
|
||||||
import cc.winboll.studio.powerbell.views.BackgroundView;
|
import cc.winboll.studio.powerbell.views.BackgroundView;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import cc.winboll.studio.powerbell.dialogs.NetworkBackgroundDialog;
|
|
||||||
|
|
||||||
public class BackgroundSettingsActivity extends WinBoLLActivity {
|
public class BackgroundSettingsActivity extends WinBoLLActivity {
|
||||||
|
|
||||||
@@ -432,64 +429,6 @@ public class BackgroundSettingsActivity extends WinBoLLActivity {
|
|||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析裁剪临时文件为 Bitmap,带采样率优化
|
|
||||||
* @param cropTempFile 裁剪临时文件
|
|
||||||
* @return 解析后的Bitmap,失败返回null
|
|
||||||
*/
|
|
||||||
private Bitmap parseCropTempFileToBitmap(File cropTempFile) {
|
|
||||||
LogUtils.d(TAG, "【工具方法】解析裁剪文件:" + (cropTempFile != null ? cropTempFile.getAbsolutePath() : "null"));
|
|
||||||
if (cropTempFile == null || !cropTempFile.exists() || !cropTempFile.isFile() || cropTempFile.length() <= 100) {
|
|
||||||
LogUtils.e(TAG, "【Bitmap解析】文件无效");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 计算采样率
|
|
||||||
BitmapFactory.Options options = new BitmapFactory.Options();
|
|
||||||
options.inJustDecodeBounds = true;
|
|
||||||
BitmapFactory.decodeFile(cropTempFile.getAbsolutePath(), options);
|
|
||||||
|
|
||||||
int sampleSize = calculateSampleSize(options.outWidth, options.outHeight);
|
|
||||||
LogUtils.d(TAG, "【Bitmap解析】采样率:" + sampleSize);
|
|
||||||
|
|
||||||
// 解析Bitmap
|
|
||||||
options.inJustDecodeBounds = false;
|
|
||||||
options.inSampleSize = sampleSize;
|
|
||||||
options.inPreferredConfig = Bitmap.Config.RGB_565;
|
|
||||||
options.inPurgeable = true;
|
|
||||||
options.inInputShareable = true;
|
|
||||||
|
|
||||||
try {
|
|
||||||
Bitmap cropBitmap = BitmapFactory.decodeFile(cropTempFile.getAbsolutePath(), options);
|
|
||||||
if (!isBitmapValid(cropBitmap)) {
|
|
||||||
LogUtils.e(TAG, "【Bitmap解析】解析失败");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
LogUtils.d(TAG, "【Bitmap解析】成功,尺寸:" + cropBitmap.getWidth() + "x" + cropBitmap.getHeight());
|
|
||||||
return cropBitmap;
|
|
||||||
} catch (OutOfMemoryError e) {
|
|
||||||
LogUtils.e(TAG, "【Bitmap解析】OOM异常");
|
|
||||||
return null;
|
|
||||||
} catch (Exception e) {
|
|
||||||
LogUtils.e(TAG, "【Bitmap解析】异常:" + e.getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 计算Bitmap采样率
|
|
||||||
* @param width 图片宽度
|
|
||||||
* @param height 图片高度
|
|
||||||
* @return 采样率
|
|
||||||
*/
|
|
||||||
private int calculateSampleSize(int width, int height) {
|
|
||||||
int sampleSize = 1;
|
|
||||||
while (width / sampleSize > BITMAP_MAX_SIZE || height / sampleSize > BITMAP_MAX_SIZE) {
|
|
||||||
sampleSize *= 2;
|
|
||||||
}
|
|
||||||
return Math.min(sampleSize, BITMAP_MAX_SAMPLE_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ====================== 业务逻辑方法(按功能分类)======================
|
// ====================== 业务逻辑方法(按功能分类)======================
|
||||||
/**
|
/**
|
||||||
* 初始化核心组件(工具类+视图)
|
* 初始化核心组件(工具类+视图)
|
||||||
@@ -550,11 +489,13 @@ public class BackgroundSettingsActivity extends WinBoLLActivity {
|
|||||||
* 显示分享图片预览对话框
|
* 显示分享图片预览对话框
|
||||||
*/
|
*/
|
||||||
private void showSharePreviewDialog() {
|
private void showSharePreviewDialog() {
|
||||||
|
LogUtils.d(TAG, "showSharePreviewDialog()");
|
||||||
BackgroundPicturePreviewDialog dlg = new BackgroundPicturePreviewDialog(this, new BackgroundPicturePreviewDialog.IOnRecivedPictureListener() {
|
BackgroundPicturePreviewDialog dlg = new BackgroundPicturePreviewDialog(this, new BackgroundPicturePreviewDialog.IOnRecivedPictureListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onAcceptRecivedPicture(Uri uriRecivedPicture) {
|
public void onAcceptRecivedPicture(Uri uriRecivedPicture) {
|
||||||
ToastUtils.show("已接收图片:" + uriRecivedPicture);
|
if (putUriFileToPreviewSource(uriRecivedPicture)) {
|
||||||
LogUtils.d(TAG, "【分享处理】接收图片Uri:" + uriRecivedPicture);
|
startImageCrop(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
dlg.show();
|
dlg.show();
|
||||||
@@ -571,11 +512,8 @@ public class BackgroundSettingsActivity extends WinBoLLActivity {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String lowerMimeType = mimeType.toLowerCase();
|
String lowerMimeType = mimeType.toLowerCase();
|
||||||
return lowerMimeType.equals("image/jpeg")
|
LogUtils.d("isImageType", "mimeType: " + mimeType + ", lowerMimeType: " + lowerMimeType);
|
||||||
|| lowerMimeType.equals("image/png")
|
return lowerMimeType.startsWith("image/");
|
||||||
|| lowerMimeType.equals("image/tiff")
|
|
||||||
|| lowerMimeType.equals("image/jpg")
|
|
||||||
|| lowerMimeType.equals("image/svg+xml");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user