From 1c44549d7a7fcedfa07f61af5f335baae69ea3d6 Mon Sep 17 00:00:00 2001 From: didikeeLuanon Date: Wed, 1 Jan 2020 20:11:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dandroid10=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=A4=B9=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/androidx/LogUtils.java | 11 ++-- .../java/com/androidx/media/MimeType.java | 9 +++- .../com/androidx/picker/AbsMediaLoader.java | 51 +++++++++++++++++++ .../java/com/androidx/picker/ImageLoader.java | 39 ++++---------- .../java/com/androidx/picker/VideoLoader.java | 37 +++----------- 5 files changed, 84 insertions(+), 63 deletions(-) create mode 100644 androidx/src/main/java/com/androidx/picker/AbsMediaLoader.java diff --git a/androidx/src/main/java/com/androidx/LogUtils.java b/androidx/src/main/java/com/androidx/LogUtils.java index 23f1c4b..fc454f2 100644 --- a/androidx/src/main/java/com/androidx/LogUtils.java +++ b/androidx/src/main/java/com/androidx/LogUtils.java @@ -11,21 +11,26 @@ */ public class LogUtils { private static final String TAG = "AndroidX"; + private static boolean DEBUG = false; + + public static void setDebug(boolean debug){ + DEBUG = debug; + } public static void d(String message) { - if (BuildConfig.DEBUG) { + if (DEBUG) { Log.d(TAG, message); } } public static void w(String message) { - if (BuildConfig.DEBUG) { + if (DEBUG) { Log.w(TAG, message); } } public static void e(String message) { - if (BuildConfig.DEBUG) { + if (DEBUG) { Log.e(TAG, message); } } diff --git a/androidx/src/main/java/com/androidx/media/MimeType.java b/androidx/src/main/java/com/androidx/media/MimeType.java index 848605e..42c13fa 100644 --- a/androidx/src/main/java/com/androidx/media/MimeType.java +++ b/androidx/src/main/java/com/androidx/media/MimeType.java @@ -7,15 +7,20 @@ */ public final class MimeType { public static final String UNKNOWN = ""; + public static final String ALL = "*/*"; + // image + public static final String IMAGE = "image/*"; public static final String PNG = "image/png"; public static final String JPEG = "image/jpeg"; public static final String GIF = "image/gif"; - public static final String IMAGE = "image/*"; + // video public static final String VIDEO = "video/*"; + public static final String MP4 = "video/mp4"; // audio + public static final String AUDIO = "audio/*"; public static final String MP3 = "audio/mpeg"; public static final String AAC = "audio/aac"; public static final String WAV = "audio/x-wav"; - public static final String MP4 = "video/mp4"; + } diff --git a/androidx/src/main/java/com/androidx/picker/AbsMediaLoader.java b/androidx/src/main/java/com/androidx/picker/AbsMediaLoader.java new file mode 100644 index 0000000..18502f8 --- /dev/null +++ b/androidx/src/main/java/com/androidx/picker/AbsMediaLoader.java @@ -0,0 +1,51 @@ +package com.androidx.picker; + +import android.text.TextUtils; + +import java.io.File; + +/** + * user author: didikee + * create time: 2020-01-01 20:01 + * description: + */ +public abstract class AbsMediaLoader { + + protected String[] getParentInfoFromData(String data) { + if (!TextUtils.isEmpty(data)) { + // 根据java系统来判断 + File file = new File(data); + if (file.exists() && file.length() > 0) { + File imageParentFile = file.getParentFile(); + if (imageParentFile != null) { + String parentName = imageParentFile.getName(); + String parentPath = imageParentFile.getAbsolutePath(); + return new String[]{parentName, parentPath}; + } + } + } + return new String[]{"", ""}; + } + + protected String[] getParentInfoFromRelativePath(String relativePath) { + if (!TextUtils.isEmpty(relativePath)) { + // 根据相对路径来判断 + // DCIM/MY FOLDER/SUB/demo.png + // android 10 DCIM/MY FOLDER/SUB + String parentName = ""; + String parentPath = ""; + if (!TextUtils.isEmpty(relativePath) && relativePath.contains(File.separator)) { + int lastIndexOf = relativePath.lastIndexOf(File.separator); + if (lastIndexOf != -1) { + parentName = relativePath.substring(lastIndexOf + 1); + parentPath = relativePath.substring(0, lastIndexOf); + } + } else { + parentName = relativePath; + parentPath = relativePath; + } + return new String[]{parentName, parentPath}; + } + return new String[]{"", ""}; + } +} diff --git a/androidx/src/main/java/com/androidx/picker/ImageLoader.java b/androidx/src/main/java/com/androidx/picker/ImageLoader.java index 3a30483..50aa5f6 100644 --- a/androidx/src/main/java/com/androidx/picker/ImageLoader.java +++ b/androidx/src/main/java/com/androidx/picker/ImageLoader.java @@ -11,7 +11,6 @@ import com.androidx.R; -import java.io.File; import java.util.ArrayList; /** @@ -19,7 +18,7 @@ * create time: 2019-07-18 13:43 * description: 获取手机里的视频 */ -public class ImageLoader { +public class ImageLoader extends AbsMediaLoader { public static final int IMAGE = 0; public static final int IMAGE_WITHOUT_GIF = 1; public static final int GIF = 2; @@ -109,35 +108,15 @@ private ArrayList load(Context context, String mimeType) { String parentName = ""; String parentPath = ""; if (!TextUtils.isEmpty(data)) { - // 根据java系统来判断 - File file = new File(data); - if (!file.exists() || file.length() <= 0) { - continue; - } - File imageParentFile = file.getParentFile(); - if (imageParentFile == null) { - continue; - } - parentName = imageParentFile.getName(); - parentPath = imageParentFile.getAbsolutePath(); + String[] parentInfo = getParentInfoFromData(data); + parentName = parentInfo[0]; + parentPath = parentInfo[1]; } + if (!TextUtils.isEmpty(relativePath)) { - // 根据相对路径来判断 - // DCIM/MY FOLDER/SUB/demo.png - // android 10 DCIM/MY FOLDER/SUB - if (!TextUtils.isEmpty(relativePath) && relativePath.contains(File.separator)) { - int lastIndexOf = relativePath.lastIndexOf(File.separator); - if (lastIndexOf != -1) { - parentName = relativePath.substring(lastIndexOf + 1); - parentPath = relativePath.substring(0, lastIndexOf); - } -// if (split.length > 0) { -// parentName = split[split.length - 1]; -// } - } else { - parentName = relativePath; - parentPath = relativePath; - } + String[] parentInfo = getParentInfoFromRelativePath(relativePath); + parentName = parentInfo[0]; + parentPath = parentInfo[1]; } long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE)); @@ -190,6 +169,7 @@ private ArrayList load(Context context, String mimeType) { return mediaFolders; } + /** * 判断是否为gif * @param displayName @@ -202,4 +182,5 @@ private boolean isGif(String displayName, String mimeType) { } return false; } + } diff --git a/androidx/src/main/java/com/androidx/picker/VideoLoader.java b/androidx/src/main/java/com/androidx/picker/VideoLoader.java index ac0ed64..0ac0dfd 100644 --- a/androidx/src/main/java/com/androidx/picker/VideoLoader.java +++ b/androidx/src/main/java/com/androidx/picker/VideoLoader.java @@ -11,7 +11,6 @@ import com.androidx.R; -import java.io.File; import java.util.ArrayList; /** @@ -19,7 +18,7 @@ * create time: 2019-07-18 13:43 * description: 获取手机里的视频 */ -public class VideoLoader { +public class VideoLoader extends AbsMediaLoader{ public ArrayList getVideos(Context context) { return getVideos(context, ""); @@ -89,35 +88,15 @@ public ArrayList getVideos(Context context, String folderPath) { String parentName = ""; String parentPath = ""; if (!TextUtils.isEmpty(data)) { - // 根据java系统来判断 - File file = new File(data); - if (!file.exists() || file.length() <= 0) { - continue; - } - File imageParentFile = file.getParentFile(); - if (imageParentFile == null) { - continue; - } - parentName = imageParentFile.getName(); - parentPath = imageParentFile.getAbsolutePath(); + String[] parentInfo = getParentInfoFromData(data); + parentName = parentInfo[0]; + parentPath = parentInfo[1]; } + if (!TextUtils.isEmpty(relativePath)) { - // 根据相对路径来判断 - // DCIM/MY FOLDER/SUB/demo.png - // android 10 DCIM/MY FOLDER/SUB - if (!TextUtils.isEmpty(relativePath) && relativePath.contains(File.separator)) { - int lastIndexOf = relativePath.lastIndexOf(File.separator); - if (lastIndexOf != -1) { - parentName = relativePath.substring(lastIndexOf + 1); - parentPath = relativePath.substring(0, lastIndexOf); - } -// if (split.length > 0) { -// parentName = split[split.length - 1]; -// } - } else { - parentName = relativePath; - parentPath = relativePath; - } + String[] parentInfo = getParentInfoFromRelativePath(relativePath); + parentName = parentInfo[0]; + parentPath = parentInfo[1]; } long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));