Skip to content

Commit

Permalink
3.1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
HuanTanSheng committed Mar 30, 2021
1 parent 61a4e08 commit e0dba05
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 17 deletions.
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ allprojects {
```gradle
dependencies {
implementation 'com.github.HuanTanSheng:EasyPhotos:3.1.1' //androidx版本,支持android 10、11,永久维护
implementation 'com.github.HuanTanSheng:EasyPhotos:3.1.2' //androidx版本,支持android 10、11,永久维护
//implementation 'com.github.HuanTanSheng:EasyPhotos:2.4.5' //还没有升级到androidx的同学可以用这个版本,但不支持android 10,暂停维护
 
Expand Down Expand Up @@ -151,16 +151,20 @@ QQ交流群:[288600953](https://jq.qq.com/?_wv=1027&k=5QGgCDe)

## 更新日志

**3.1.2:**
- 优化:线程安全
- 优化:防止用户在外部多次点击重复打开相册页

**3.1.1:**
- 修复:在Q平台直接调用相机时的空指针问题
- 修复:在Q平台直接调用相机时的空指针问题

**3.1.0:**
- 适配:android 11
- 重要:createAlbum方法新增useWidth参数
意义:是否需要使用图片的宽高数据
true:会保证宽高数据的正确性,耗时,扫描图片慢
false:不需要,宽高数据返回为0
特别声明:如果使用到宽高限制,则useWidth会强制为true
意义:是否需要使用图片的宽高数据
true:会保证宽高数据的正确性,耗时,扫描图片慢
false:不需要,宽高数据返回为0
特别声明:如果使用到宽高限制,则useWidth会强制为true
- 重要:新增API:preLoad(Context cxt),预加载,不调用该方法也不影响程序使用。单类型选择建议不调用该方法,某些机型第一次扫描多类型文件可能会慢,可以在app主页面或调用EasyPhotos的上一页做一次预加载,若未授权读取权限该功能失效但不影响程序使用。
- 重要:start的链式回调模式,增加onCancel状态回调
- 重要:EasyPhotos.addWatermark方法,新增返回Bitmap(既加水印后的Bitmap),新增orientation参数,int类型,Bitmap的旋转角度。当useWidth为true时,Photo实体类中会有orientation,若bitmap不是用户手机内图片,填0即可。
Expand Down
Binary file modified demo/release/demo-release.apk
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,10 @@ public class EasyPhotos {

/**
* 预加载
* 第一次扫描可能会慢,建议在启动app时做一次预加载
* 调不调用该方法都可以,不调用不影响EasyPhotos正常使用
* 第一次扫描媒体库可能会慢,调用预加载会使真正打开相册的速度加快
* 若调用该方法,建议自行判断代码书写位置,建议在用户打开相册的3秒前调用,比如app主页面或调用相册的上一页
* 该方法如果没有授权读取权限的话,是无效的,所以外部加不加权限控制都可以,加的话保证执行,不加也不影响程序正常使用
*
* @param cxt 上下文
*/
Expand All @@ -50,7 +53,10 @@ public static void preLoad(Context cxt) {

/**
* 预加载
* 第一次扫描可能会慢,建议在启动app时做一次预加载
* 调不调用该方法都可以,不调用不影响EasyPhotos正常使用
* 第一次扫描媒体库可能会慢,调用预加载会使真正打开相册的速度加快
* 若调用该方法,建议自行判断代码书写位置,建议在用户打开相册的3秒前调用,比如app主页面或调用相册的上一页
* 该方法如果没有授权读取权限的话,是无效的,所以外部加不加权限控制都可以,加的话保证执行,不加也不影响程序正常使用
*
* @param cxt 上下文
* @param callBack 预加载完成的回调,若进行UI操作,需自行切回主线程。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static AlbumModel getInstance() {
* @param context 调用查询方法的context
* @param callBack 查询完成后的回调
*/
public boolean canRun = true;
public volatile boolean canRun = true;

public void query(final Context context, final CallBack callBack) {
if (PermissionChecker.checkSelfPermission(context,
Expand All @@ -72,7 +72,6 @@ public void query(final Context context, final CallBack callBack) {
new Thread(new Runnable() {
@Override
public void run() {
album.clear();
initAlbum(context);
if (null != callBack) callBack.onAlbumWorkedCallBack();
}
Expand All @@ -83,7 +82,9 @@ public void stopQuery() {
canRun = false;
}

private void initAlbum(Context context) {
private synchronized void initAlbum(Context context) {
album.clear();
// long now = System.currentTimeMillis();
if (Setting.selectedPhotos.size() > Setting.count) {
throw new RuntimeException("AlbumBuilder: 默认勾选的图片张数不能大于设置的选择数!" + "|默认勾选图片张数:" + Setting.selectedPhotos.size() + "|设置的选择数:" + Setting.count);
}
Expand Down Expand Up @@ -113,7 +114,6 @@ private void initAlbum(Context context) {

ContentResolver contentResolver = context.getContentResolver();

long now = System.currentTimeMillis();

List<String> projectionList = new ArrayList<String>();
projectionList.add(MediaStore.Files.FileColumns._ID);
Expand Down Expand Up @@ -289,7 +289,7 @@ private void initAlbum(Context context) {
} while (cursor.moveToNext() && canRun);
cursor.close();
}
Log.d(TAG, "initAlbum: " + (System.currentTimeMillis() - now));
// Log.d(TAG, "initAlbum: " + (System.currentTimeMillis() - now));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,31 @@ public class EasyPhotosActivity extends AppCompatActivity implements AlbumItemsA

private boolean isQ = false;

public static long startTime = 0;

public static boolean doubleClick() {
long now = System.currentTimeMillis();
if (now - startTime < 600) {
return true;
}
startTime = now;
return false;
}

public static void start(Activity activity, int requestCode) {
if (doubleClick()) return;
Intent intent = new Intent(activity, EasyPhotosActivity.class);
activity.startActivityForResult(intent, requestCode);
}

public static void start(Fragment fragment, int requestCode) {
if (doubleClick()) return;
Intent intent = new Intent(fragment.getActivity(), EasyPhotosActivity.class);
fragment.startActivityForResult(intent, requestCode);
}

public static void start(androidx.fragment.app.Fragment fragment, int requestCode) {
if (doubleClick()) return;
Intent intent = new Intent(fragment.getContext(), EasyPhotosActivity.class);
fragment.startActivityForResult(intent, requestCode);
}
Expand Down Expand Up @@ -596,7 +610,8 @@ public void run() {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mTempImageFile.getAbsolutePath(), options);
MediaScannerConnectionUtils.refresh(EasyPhotosActivity.this, mTempImageFile);// 更新媒体库
MediaScannerConnectionUtils.refresh(EasyPhotosActivity.this, mTempImageFile);//
// 更新媒体库

Uri uri = UriUtils.getUri(EasyPhotosActivity.this, mTempImageFile);
int width = 0;
Expand All @@ -621,10 +636,12 @@ public void run() {
}
}

final Photo photo = new Photo(mTempImageFile.getName(), uri, mTempImageFile.getAbsolutePath(),
final Photo photo = new Photo(mTempImageFile.getName(), uri,
mTempImageFile.getAbsolutePath(),
mTempImageFile.lastModified() / 1000, width, height, orientation,
mTempImageFile.length(),
DurationUtils.getDuration(mTempImageFile.getAbsolutePath()), options.outMimeType);
DurationUtils.getDuration(mTempImageFile.getAbsolutePath()),
options.outMimeType);

runOnUiThread(new Runnable() {
@Override
Expand All @@ -637,7 +654,8 @@ public void run() {

data.putParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS, resultList);

data.putExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, Setting.selectedOriginal);
data.putExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL,
Setting.selectedOriginal);

setResult(RESULT_OK, data);
finish();
Expand Down

0 comments on commit e0dba05

Please sign in to comment.