feat:视频选择支持具体类型过滤
fix:修复exo播放器字段初始化问题
This commit is contained in:
@@ -55,13 +55,24 @@ object PhotoProviderNew {
|
|||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@JvmOverloads
|
@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()
|
cancelJop()
|
||||||
mPhotoJob = MainScope().launch {
|
mPhotoJob = MainScope().launch {
|
||||||
if (isClearCache && isClearByTime()) {
|
if (isClearCache && isClearByTime()) {
|
||||||
withContext(Dispatchers.IO) { clearCache() }
|
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
|
.setCount(maxSelect)//参数说明:最大可选数,默认1
|
||||||
.setGif(canChooseGif)
|
.setGif(canChooseGif)
|
||||||
.filter(JPEG, JPG, PNG, WEBP)
|
.filter(JPEG, JPG, PNG, WEBP)
|
||||||
@@ -73,30 +84,46 @@ object PhotoProviderNew {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@JvmOverloads
|
@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()
|
cancelJop()
|
||||||
mPhotoJob = MainScope().launch {
|
mPhotoJob = MainScope().launch {
|
||||||
if (isClearCache && isClearByTime()) {
|
if (isClearCache && isClearByTime()) {
|
||||||
withContext(Dispatchers.IO) { clearCache() }
|
withContext(Dispatchers.IO) { clearCache() }
|
||||||
}
|
}
|
||||||
EasyPhotos.createAlbum(activity, false, false, GlideEngine())
|
EasyPhotos.createAlbum(activity, false, false, GlideEngine())
|
||||||
.setCount(maxSelect)//参数说明:最大可选数,默认1
|
.setCount(maxSelect)//参数说明:最大可选数,默认1
|
||||||
.setPuzzleMenu(false)
|
.setPuzzleMenu(false)
|
||||||
.onlyVideo()
|
.onlyVideo()
|
||||||
.setCleanMenu(false)
|
.setCleanMenu(false)
|
||||||
.start(resultCode)
|
.start(resultCode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@JvmOverloads
|
@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()
|
cancelJop()
|
||||||
mPhotoJob = MainScope().launch {
|
mPhotoJob = MainScope().launch {
|
||||||
if (isClearCache && isClearByTime()) {
|
if (isClearCache && isClearByTime()) {
|
||||||
withContext(Dispatchers.IO) { clearCache() }
|
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
|
.setCount(maxSelect)//参数说明:最大可选数,默认1
|
||||||
.setGif(canChooseGif)
|
.setGif(canChooseGif)
|
||||||
.setPuzzleMenu(false)
|
.setPuzzleMenu(false)
|
||||||
@@ -107,13 +134,24 @@ object PhotoProviderNew {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@JvmOverloads
|
@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()
|
cancelJop()
|
||||||
mPhotoJob = MainScope().launch {
|
mPhotoJob = MainScope().launch {
|
||||||
if (isClearCache && isClearByTime()) {
|
if (isClearCache && isClearByTime()) {
|
||||||
withContext(Dispatchers.IO) { clearCache() }
|
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
|
.setCount(maxSelect)//参数说明:最大可选数,默认1
|
||||||
.setGif(canChooseGif)
|
.setGif(canChooseGif)
|
||||||
.setPuzzleMenu(false)
|
.setPuzzleMenu(false)
|
||||||
@@ -124,13 +162,25 @@ object PhotoProviderNew {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@JvmOverloads
|
@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()
|
cancelJop()
|
||||||
mPhotoJob = MainScope().launch {
|
mPhotoJob = MainScope().launch {
|
||||||
if (isClearCache && isClearByTime()) {
|
if (isClearCache && isClearByTime()) {
|
||||||
withContext(Dispatchers.IO) { clearCache() }
|
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
|
.setCount(maxSelect)//参数说明:最大可选数,默认1
|
||||||
.setGif(canChooseGif)
|
.setGif(canChooseGif)
|
||||||
.setMinFileSize(minFileSize)
|
.setMinFileSize(minFileSize)
|
||||||
@@ -142,19 +192,41 @@ object PhotoProviderNew {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@JvmOverloads
|
@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()
|
cancelJop()
|
||||||
mPhotoJob = MainScope().launch {
|
mPhotoJob = MainScope().launch {
|
||||||
if (isClearCache && isClearByTime()) {
|
if (isClearCache && isClearByTime()) {
|
||||||
withContext(Dispatchers.IO) { clearCache() }
|
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
|
.setCount(maxSelect)//参数说明:最大可选数,默认1
|
||||||
.setGif(canChooseGif)
|
.setGif(canChooseGif)
|
||||||
.setVideo(true)
|
.setVideo(true)
|
||||||
.setMinFileSize(minFileSize)
|
.setMinFileSize(minFileSize)
|
||||||
|
.setMaxFileSize(maxFileSize)
|
||||||
|
.setShowVideoType(showVideoType)
|
||||||
.setPuzzleMenu(false)
|
.setPuzzleMenu(false)
|
||||||
.setCleanMenu(false)
|
.setCleanMenu(false)
|
||||||
|
.apply {
|
||||||
|
if (videoMaxSecond > 0) {
|
||||||
|
setVideoMaxSecond(videoMaxSecond)
|
||||||
|
}
|
||||||
|
}
|
||||||
.start(resultCode)
|
.start(resultCode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -200,7 +272,10 @@ object PhotoProviderNew {
|
|||||||
val path = "$foldPath${it.name}"
|
val path = "$foldPath${it.name}"
|
||||||
if (FileHelper.copyFileFromUri(it.uri, path, true)) {
|
if (FileHelper.copyFileFromUri(it.uri, path, true)) {
|
||||||
newPaths.add(path)
|
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() {
|
fun clearCache() {
|
||||||
Logger.debug(
|
Logger.debug(
|
||||||
TAG, "clearCache => mLastSelectTime: ${TimeUtils.getDateTimeString(
|
TAG, "clearCache => mLastSelectTime: ${
|
||||||
mLastSelectTime, TIME_FORMAT)}")
|
TimeUtils.getDateTimeString(
|
||||||
|
mLastSelectTime, TIME_FORMAT
|
||||||
|
)
|
||||||
|
}"
|
||||||
|
)
|
||||||
FileHelper.removeAllFile(getInternalPath() + File.separator)
|
FileHelper.removeAllFile(getInternalPath() + File.separator)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -34,7 +34,7 @@ class ExoPlayer : StyledPlayerView, IPlayer, LifecycleEventObserver {
|
|||||||
private var listenerAdapter: Player.Listener? = null
|
private var listenerAdapter: Player.Listener? = null
|
||||||
|
|
||||||
// 操作的记录(用于感知生命周期恢复播放或其他场景的判断)
|
// 操作的记录(用于感知生命周期恢复播放或其他场景的判断)
|
||||||
private var playWhenReadyBackup = getPlayWhenReady()
|
private var playWhenReadyBackup = false
|
||||||
|
|
||||||
constructor(context: Context) : this(context, null)
|
constructor(context: Context) : this(context, null)
|
||||||
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
|
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
|
||||||
|
@@ -412,6 +412,17 @@ public class AlbumBuilder {
|
|||||||
return AlbumBuilder.this;
|
return AlbumBuilder.this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置显示展示的视频类型
|
||||||
|
*
|
||||||
|
* @param videoType 视频类型(MimeType中的后部分,如mp4、webm)
|
||||||
|
* @return AlbumBuilder
|
||||||
|
*/
|
||||||
|
public AlbumBuilder setShowVideoType(String videoType) {
|
||||||
|
Setting.videoType = videoType;
|
||||||
|
return AlbumBuilder.this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 显示最少多少秒的视频
|
* 显示最少多少秒的视频
|
||||||
*
|
*
|
||||||
|
@@ -172,6 +172,10 @@ public class AlbumModel {
|
|||||||
int height = 0;
|
int height = 0;
|
||||||
int orientation = 0;
|
int orientation = 0;
|
||||||
if (isVideo) {
|
if (isVideo) {
|
||||||
|
String videoType = Setting.videoType;
|
||||||
|
if (videoType != null && !type.contains(videoType)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (hasTime)
|
if (hasTime)
|
||||||
duration = cursor.getLong(durationCol);
|
duration = cursor.getLong(durationCol);
|
||||||
if (duration <= Setting.videoMinSecond || duration >= Setting.videoMaxSecond) {
|
if (duration <= Setting.videoMinSecond || duration >= Setting.videoMaxSecond) {
|
||||||
|
@@ -44,6 +44,9 @@ public class Setting {
|
|||||||
public static List<String> filterTypes = new ArrayList<>();
|
public static List<String> filterTypes = new ArrayList<>();
|
||||||
public static boolean showGif = false;
|
public static boolean showGif = false;
|
||||||
public static boolean showVideo = false;
|
public static boolean showVideo = false;
|
||||||
|
// 视频类型(mp4、webm) 过滤mimeType,mimeType包含此值才有效
|
||||||
|
public static String videoType = null;
|
||||||
|
|
||||||
public static boolean showCleanMenu = true;
|
public static boolean showCleanMenu = true;
|
||||||
public static long videoMinSecond = 0L;
|
public static long videoMinSecond = 0L;
|
||||||
public static long videoMaxSecond = Long.MAX_VALUE;
|
public static long videoMaxSecond = Long.MAX_VALUE;
|
||||||
|
Reference in New Issue
Block a user