feat:视频选择支持具体类型过滤

fix:修复exo播放器字段初始化问题
This commit is contained in:
Max
2023-11-03 16:51:11 +08:00
parent 4c98e9422c
commit 8990405c6f
5 changed files with 117 additions and 20 deletions

View File

@@ -55,13 +55,24 @@ object PhotoProviderNew {
*/
@JvmStatic
@JvmOverloads
fun photoProviderPublish(activity: Activity, maxSelect: Int = 1, canChooseGif: Boolean = false, resultCode: Int, isClearCache: Boolean = true) {
fun photoProviderPublish(
activity: Activity,
maxSelect: Int = 1,
canChooseGif: Boolean = false,
resultCode: Int,
isClearCache: Boolean = true
) {
cancelJop()
mPhotoJob = MainScope().launch {
if (isClearCache && isClearByTime()) {
withContext(Dispatchers.IO) { clearCache() }
}
EasyPhotos.createAlbum(activity, false, false, GlideEngine())//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
EasyPhotos.createAlbum(
activity,
false,
false,
GlideEngine()
)//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
.setCount(maxSelect)//参数说明最大可选数默认1
.setGif(canChooseGif)
.filter(JPEG, JPG, PNG, WEBP)
@@ -73,7 +84,12 @@ object PhotoProviderNew {
@JvmStatic
@JvmOverloads
fun videoProvider(activity: Activity, maxSelect: Int = 1, resultCode: Int, isClearCache: Boolean = true) {
fun videoProvider(
activity: Activity,
maxSelect: Int = 1,
resultCode: Int,
isClearCache: Boolean = true
) {
cancelJop()
mPhotoJob = MainScope().launch {
if (isClearCache && isClearByTime()) {
@@ -90,13 +106,24 @@ object PhotoProviderNew {
@JvmStatic
@JvmOverloads
fun photoProvider(activity: Activity, maxSelect: Int = 1, canChooseGif: Boolean = false, resultCode: Int, isClearCache: Boolean = true) {
fun photoProvider(
activity: Activity,
maxSelect: Int = 1,
canChooseGif: Boolean = false,
resultCode: Int,
isClearCache: Boolean = true
) {
cancelJop()
mPhotoJob = MainScope().launch {
if (isClearCache && isClearByTime()) {
withContext(Dispatchers.IO) { clearCache() }
}
EasyPhotos.createAlbum(activity, false, false, GlideEngine())//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
EasyPhotos.createAlbum(
activity,
false,
false,
GlideEngine()
)//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
.setCount(maxSelect)//参数说明最大可选数默认1
.setGif(canChooseGif)
.setPuzzleMenu(false)
@@ -107,13 +134,24 @@ object PhotoProviderNew {
@JvmStatic
@JvmOverloads
fun photoProvider(activity: FragmentActivity, maxSelect: Int = 1, canChooseGif: Boolean = false, resultCode: Int, isClearCache: Boolean = true) {
fun photoProvider(
activity: FragmentActivity,
maxSelect: Int = 1,
canChooseGif: Boolean = false,
resultCode: Int,
isClearCache: Boolean = true
) {
cancelJop()
mPhotoJob = MainScope().launch {
if (isClearCache && isClearByTime()) {
withContext(Dispatchers.IO) { clearCache() }
}
EasyPhotos.createAlbum(activity, false, false, GlideEngine())//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
EasyPhotos.createAlbum(
activity,
false,
false,
GlideEngine()
)//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
.setCount(maxSelect)//参数说明最大可选数默认1
.setGif(canChooseGif)
.setPuzzleMenu(false)
@@ -124,13 +162,25 @@ object PhotoProviderNew {
@JvmStatic
@JvmOverloads
fun photoProvider(fragment: Fragment, maxSelect: Int = 1, canChooseGif: Boolean = false, resultCode: Int, isClearCache: Boolean = true, minFileSize: Long = 0L) {
fun photoProvider(
fragment: Fragment,
maxSelect: Int = 1,
canChooseGif: Boolean = false,
resultCode: Int,
isClearCache: Boolean = true,
minFileSize: Long = 0L
) {
cancelJop()
mPhotoJob = MainScope().launch {
if (isClearCache && isClearByTime()) {
withContext(Dispatchers.IO) { clearCache() }
}
EasyPhotos.createAlbum(fragment, false, false, GlideEngine())//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
EasyPhotos.createAlbum(
fragment,
false,
false,
GlideEngine()
)//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
.setCount(maxSelect)//参数说明最大可选数默认1
.setGif(canChooseGif)
.setMinFileSize(minFileSize)
@@ -142,19 +192,41 @@ object PhotoProviderNew {
@JvmStatic
@JvmOverloads
fun photoVideoProvider(fragment: Fragment, maxSelect: Int = 1, canChooseGif: Boolean = false, resultCode: Int, isClearCache: Boolean = true, minFileSize: Long = 0L) {
fun photoVideoProvider(
fragment: Fragment,
maxSelect: Int = 1,
canChooseGif: Boolean = false,
resultCode: Int,
isClearCache: Boolean = true,
minFileSize: Long = 0L,
maxFileSize: Long = Long.MAX_VALUE,
videoMaxSecond: Int = -1,
showVideoType: String
) {
cancelJop()
mPhotoJob = MainScope().launch {
if (isClearCache && isClearByTime()) {
withContext(Dispatchers.IO) { clearCache() }
}
EasyPhotos.createAlbum(fragment, false, false, GlideEngine())//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
EasyPhotos.createAlbum(
fragment,
false,
false,
GlideEngine()
)//参数说明上下文是否显示相机按钮是否使用宽高数据false时宽高数据为0扫描速度更快[配置Glide为图片加载引擎](https://github.com/HuanTanSheng/EasyPhotos/wiki/12-%E9%85%8D%E7%BD%AEImageEngine%EF%BC%8C%E6%94%AF%E6%8C%81%E6%89%80%E6%9C%89%E5%9B%BE%E7%89%87%E5%8A%A0%E8%BD%BD%E5%BA%93)
.setCount(maxSelect)//参数说明最大可选数默认1
.setGif(canChooseGif)
.setVideo(true)
.setMinFileSize(minFileSize)
.setMaxFileSize(maxFileSize)
.setShowVideoType(showVideoType)
.setPuzzleMenu(false)
.setCleanMenu(false)
.apply {
if (videoMaxSecond > 0) {
setVideoMaxSecond(videoMaxSecond)
}
}
.start(resultCode)
}
}
@@ -200,7 +272,10 @@ object PhotoProviderNew {
val path = "$foldPath${it.name}"
if (FileHelper.copyFileFromUri(it.uri, path, true)) {
newPaths.add(path)
Logger.debug(TAG, "path: ${it.path} , displayName: ${it.name} , newPath: $path ")
Logger.debug(
TAG,
"path: ${it.path} , displayName: ${it.name} , newPath: $path "
)
}
}
}
@@ -215,8 +290,12 @@ object PhotoProviderNew {
*/
fun clearCache() {
Logger.debug(
TAG, "clearCache => mLastSelectTime: ${TimeUtils.getDateTimeString(
mLastSelectTime, TIME_FORMAT)}")
TAG, "clearCache => mLastSelectTime: ${
TimeUtils.getDateTimeString(
mLastSelectTime, TIME_FORMAT
)
}"
)
FileHelper.removeAllFile(getInternalPath() + File.separator)
}

View File

@@ -34,7 +34,7 @@ class ExoPlayer : StyledPlayerView, IPlayer, LifecycleEventObserver {
private var listenerAdapter: Player.Listener? = null
// 操作的记录(用于感知生命周期恢复播放或其他场景的判断)
private var playWhenReadyBackup = getPlayWhenReady()
private var playWhenReadyBackup = false
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)

View File

@@ -412,6 +412,17 @@ public class AlbumBuilder {
return AlbumBuilder.this;
}
/**
* 设置显示展示的视频类型
*
* @param videoType 视频类型MimeType中的后部分如mp4、webm
* @return AlbumBuilder
*/
public AlbumBuilder setShowVideoType(String videoType) {
Setting.videoType = videoType;
return AlbumBuilder.this;
}
/**
* 显示最少多少秒的视频
*

View File

@@ -172,6 +172,10 @@ public class AlbumModel {
int height = 0;
int orientation = 0;
if (isVideo) {
String videoType = Setting.videoType;
if (videoType != null && !type.contains(videoType)) {
continue;
}
if (hasTime)
duration = cursor.getLong(durationCol);
if (duration <= Setting.videoMinSecond || duration >= Setting.videoMaxSecond) {

View File

@@ -44,6 +44,9 @@ public class Setting {
public static List<String> filterTypes = new ArrayList<>();
public static boolean showGif = false;
public static boolean showVideo = false;
// 视频类型mp4、webm 过滤mimeTypemimeType包含此值才有效
public static String videoType = null;
public static boolean showCleanMenu = true;
public static long videoMinSecond = 0L;
public static long videoMaxSecond = Long.MAX_VALUE;