diff --git a/ImagePickerLib/src/main/java/com/mx/imgpicker/app/picker/MXImgPickerActivity.kt b/ImagePickerLib/src/main/java/com/mx/imgpicker/app/picker/MXImgPickerActivity.kt
index b573f4211468286b8ddbc41d6c2ef1f6dbb0dc3b..149d2a21dcf577204abd5220aff506819bf2903b 100644
--- a/ImagePickerLib/src/main/java/com/mx/imgpicker/app/picker/MXImgPickerActivity.kt
+++ b/ImagePickerLib/src/main/java/com/mx/imgpicker/app/picker/MXImgPickerActivity.kt
@@ -2,6 +2,7 @@ package com.mx.imgpicker.app.picker
import android.Manifest
import android.content.Intent
+import android.os.Build
import android.os.Bundle
import android.provider.MediaStore
import android.widget.Toast
@@ -69,7 +70,11 @@ class MXImgPickerActivity : AppCompatActivity() {
}
MXUtils.log("启动")
- val permissions = arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE)
+ val permissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ arrayOf(Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO)
+ } else {
+ arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE)
+ }
if (!MXUtils.hasPermission(this, permissions)) {
Toast.makeText(
this,
diff --git a/README.md b/README.md
index 3d055cede9b933af358a41ff3fe1c6677c8c99f1..8b92cb147e54dfa5404c13da0850deff30d3fd62 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
Gradle引用
```gradle
- implementation 'com.gitee.zhangmengxiong:MXImagePicker:1.5.8'
+ implementation 'com.gitee.zhangmengxiong:MXImagePicker:1.5.9'
```

@@ -30,8 +30,13 @@ Gradle引用
#### 第二步:使用前需要修改‘AndroidManifest.xml’配置:添加相册、存储权限
```kotlin
- Manifest.permission.CAMERA
+ // 如果 Android版本 < 33 需要以下权限:
+Manifest.permission.CAMERA
Manifest.permission.READ_EXTERNAL_STORAGE
+// 如果 Android版本 >= 33 需要以下权限:
+Manifest.permission.CAMERA
+Manifest.permission.READ_MEDIA_IMAGES
+Manifest.permission.READ_MEDIA_VIDEO
// targetSdkVersion >= 29 的应用需要在application节点添加以下属性
android:requestLegacyExternalStorage = "true"
@@ -59,9 +64,9 @@ MXScanBiz.scanAll(this, lifecycleScope)
1. `setMaxSize(size: Int)` 设置最大选择文件个数
2. `setType(type: PickerType)` 设置类型
- * PickerType.Image = 图片
- * PickerType.Video = 视频
- * PickerType.ImageAndVideo = 图片 + 视频 混合选择
+ * PickerType.Image = 图片
+ * PickerType.Video = 视频
+ * PickerType.ImageAndVideo = 图片 + 视频 混合选择
3. `setCameraEnable(enable: Boolean)` 设置是否启动拍摄功能,默认=true
4. `setMaxVideoLength(length: Int)` 当类型=Video时,可以选择视频最大时长限制,单位:秒 默认=-1 无限制
5. `setMaxListSize(size: Int)` 最长列表加载长度,防止图片过多时产生OOM -1=不限制 默认限制长度=1000条
@@ -69,12 +74,12 @@ MXScanBiz.scanAll(this, lifecycleScope)
```kotlin
// 在图片选择器Activity创建时会回调这个方法,一般会通过这个来改变导航栏、状态栏的Theme,demo中搭配`ImmersionBar`来实现沉浸式效果
MXImagePicker.registerActivityCallback { activity ->
- ImmersionBar.with(activity)
- .autoDarkModeEnable(true)
- .statusBarColorInt(activity.resources.getColor(R.color.picker_color_background))
- .fitsSystemWindows(true)
- .navigationBarColor(R.color.picker_color_background)
- .init()
+ ImmersionBar.with(activity)
+ .autoDarkModeEnable(true)
+ .statusBarColorInt(activity.resources.getColor(R.color.picker_color_background))
+ .fitsSystemWindows(true)
+ .navigationBarColor(R.color.picker_color_background)
+ .init()
}
```
@@ -87,10 +92,10 @@ MXImagePicker.registerActivityCallback { activity ->
#333333
-
+
#F1F1F1
-
+
#03CE65
```
@@ -100,18 +105,18 @@ MXImagePicker.registerActivityCallback { activity ->
```xml
选择
- 全部
- 您最多只能选择 %s 张图片!
- 您最多只能选择 %s 个视频!
- 只能选择 %s 秒以内的视频
- 需要写入存储、相机权限
- 需要读取存储权限
- 打开失败!
- 预览
- 原图
- 拍摄图片
- 拍摄视频
- 图片查看
+全部
+您最多只能选择 %s 张图片!
+您最多只能选择 %s 个视频!
+只能选择 %s 秒以内的视频
+需要写入存储、相机权限
+需要读取存储权限
+打开失败!
+预览
+原图
+拍摄图片
+拍摄视频
+图片查看
```
dimens.xml 资源
@@ -131,16 +136,16 @@ data class MXItem(val path: String, val time: Long, val type: MXPickerType, val
// 全局注册加载器,可以卸载Application里面,不影响启动速度
MXImagePicker.registerImageLoader { activity, item, imageView ->
- if (File(item.path).exists()) {
- Glide.with(activity).load(File(item.path))
- .placeholder(R.drawable.mx_icon_picker_image_place_holder).into(imageView)
- } else if (item.path.startsWith("http")) {
- Glide.with(activity).load(item.path)
- .placeholder(R.drawable.mx_icon_picker_image_place_holder).into(imageView)
- } else {
- Glide.with(activity).load(item.uri)
- .placeholder(R.drawable.mx_icon_picker_image_place_holder).into(imageView)
- }
+ if (File(item.path).exists()) {
+ Glide.with(activity).load(File(item.path))
+ .placeholder(R.drawable.mx_icon_picker_image_place_holder).into(imageView)
+ } else if (item.path.startsWith("http")) {
+ Glide.with(activity).load(item.path)
+ .placeholder(R.drawable.mx_icon_picker_image_place_holder).into(imageView)
+ } else {
+ Glide.with(activity).load(item.uri)
+ .placeholder(R.drawable.mx_icon_picker_image_place_holder).into(imageView)
+ }
}
```
@@ -148,11 +153,11 @@ MXImagePicker.registerImageLoader { activity, item, imageView ->
```kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- super.onActivityResult(requestCode, resultCode, data)
- if (resultCode == RESULT_OK && requestCode == 0x22) {
- val paths = MXPickerBuilder.getPickerResult(data) ?: return //返回List类型数据
- println(paths)
- }
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == RESULT_OK && requestCode == 0x22) {
+ val paths = MXPickerBuilder.getPickerResult(data) ?: return //返回List类型数据
+ println(paths)
+ }
}
```
@@ -183,10 +188,10 @@ val file = builder.getCaptureFile()
```kotlin
MXImgShowActivity.open(
- this, arrayListOf(
- "http://videos.jzvd.org/v/饺子主动.jpg",
- "http://videos.jzvd.org/v/饺子运动.jpg"
- ), "图片详情"
+ this, arrayListOf(
+ "http://videos.jzvd.org/v/饺子主动.jpg",
+ "http://videos.jzvd.org/v/饺子运动.jpg"
+ ), "图片详情"
)
```
@@ -195,9 +200,9 @@ MXImgShowActivity.open(
```kotlin
val file = File(".../xx.png")
val scaleImg = MXImageCompress.from(context)
- .setCacheDir(applicationContext.cacheDir) // 缓存目录
- .setSupportAlpha(true) // 支持透明通道(’.png‘格式) 默认=’.jpg‘格式
- .setIgnoreFileSize(50) // 设置文件低于这个大小时,不进行压缩
- .compress(file)
+ .setCacheDir(applicationContext.cacheDir) // 缓存目录
+ .setSupportAlpha(true) // 支持透明通道(’.png‘格式) 默认=’.jpg‘格式
+ .setIgnoreFileSize(50) // 设置文件低于这个大小时,不进行压缩
+ .compress(file)
```
\ No newline at end of file
diff --git a/app/src/main/java/com/mx/imagepicker_sample/MainActivity.kt b/app/src/main/java/com/mx/imagepicker_sample/MainActivity.kt
index 0fe7aef8976ff8f8531e1d3437d0389ea407d9f4..53075ff157a4dd292d912c1b9f0eabd99c5c511f 100644
--- a/app/src/main/java/com/mx/imagepicker_sample/MainActivity.kt
+++ b/app/src/main/java/com/mx/imagepicker_sample/MainActivity.kt
@@ -5,16 +5,14 @@ import android.net.Uri
import android.os.Bundle
import android.view.View
import androidx.fragment.app.FragmentActivity
-import androidx.lifecycle.lifecycleScope
import com.bumptech.glide.Glide
import com.gyf.immersionbar.ImmersionBar
import com.mx.imgpicker.MXImagePicker
import com.mx.imgpicker.app.MXImgShowActivity
import com.mx.imgpicker.builder.MXCaptureBuilder
import com.mx.imgpicker.builder.MXPickerBuilder
-import com.mx.imgpicker.models.MXPickerType
import com.mx.imgpicker.compress.MXImageCompress
-import com.mx.imgpicker.utils.MXScanBiz
+import com.mx.imgpicker.models.MXPickerType
import com.mx.starter.MXStarter
import java.io.File
diff --git a/build.gradle b/build.gradle
index b484a12f2c363174b406ccbb5481f02f66d24ddd..4566a403c6f24264e28bb3f4a1a2058dddd97653 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,7 +9,7 @@ buildscript {
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.2.2'
+ classpath 'com.android.tools.build:gradle:7.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
@@ -32,10 +32,10 @@ task clean(type: Delete) {
}
ext {
- compileSdkVersion = 32
- targetSdkVersion = 32
+ compileSdkVersion = 33
+ targetSdkVersion = 33
minSdkVersion = 19
versionCode = 1
- versionName = "1.5.8"
+ versionName = "1.5.9"
}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 529e514caed82022f81fc0c0a0c5a9da98ab2b9d..3d0386eb6682aad64ee54762100116fdd6ed203c 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Thu Mar 10 15:22:55 CST 2022
+#Thu Mar 02 16:14:03 CST 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME