ScopeMideaPicker es un selector de medios para imágenes, videos que admite el sistema de archivos Android 10 y 11 (sin bandera requestLegacyExternalStorage), incluye ambos con cámara / galería, adivina qué, los permisos se administran internamente, ¡yayy!
También se agregaron soportes para el selector de archivos con los tipos de archivo de su elección.
Solo tienes que llamar al método de inicio y devolver la llamada a la biblioteca y listo, amigos 🙂
También permite la selección de múltiples imágenes / videos y también le permite recortar la funcionalidad de la imagen en caso de una selección única (generalmente se usa para seleccionar la imagen de perfil)
siga las sencillas instrucciones a continuación
Paso 1. Agregue el repositorio de JitPack a su archivo de compilación
Agréguelo en su build.gradle raíz al final de los repositorios:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Paso 2. Agrega la dependencia
dependencies {
implementation 'com.github.bhoomit11:ScopedMediaPicker:1.0.0'
}
Paso 3. Inicialice el selector de medios
private val scopedMediaPicker by lazy {
ScopedMediaPicker(
activity = this@MediaPickerActivity,
fragment = this@MediaPickerFragment // Optional, Only if used with fragment
requiresCrop = true, // Optional
allowMultipleImages = true, // Optional
)
}
Bien, analicemos el paso 3, para inicializar el selector de medios, debe agregar diferentes configuraciones según sus necesidades, como
ocupaciones – Si está utilizando su reproductor multimedia en actividad, proporcione su instancia de actividad aquí, para que se le recuerde en esta misma actividad para el método de reemplazo onRequestPermissionsResult Y onActivityResult, esto también se usará como contexto en la biblioteca, por lo que incluso con el fragmento, este es un parámetro obligatorio
fragmento – Si está utilizando su reproductor multimedia en un fragmento, proporcione su instancia de fragmento aquí, para que le devuelva la llamada en este mismo fragmento para el método de anulación. onRequestPermissionsResult Y onActivityResult,
requiereCrop – Si necesita la funcionalidad de recorte en la imagen seleccionada, puede pasar esto como verdadero, tenga en cuenta que esto no funcionará con allowMultipleImages como verdadero, solo funciona para una imagen de una sola opción, como seleccionar la imagen de perfil, por lo que si este parámetro es verdadero, allowMultipleImages debería ser falso.
allowMultipleImages – Si es necesario recopilar varias imágenes
Paso 4. Comience a recopilar sus archivos multimedia
btnCapture.setOnClickListener {
scopedMediaPicker.startMediaPicker(
mediaType = ScopedMediaPicker.MEDIA_TYPE_IMAGE or
ScopedMediaPicker.MEDIA_TYPE_VIDEO
) { pathList, type ->
when (type) {
ScopedMediaPicker.MEDIA_TYPE_IMAGE -> {
// Handle your images here
}
ScopedMediaPicker.MEDIA_TYPE_VIDEO -> {
// Handle your videos here
}
}
}
Obtendrá una lista de rutas de imagen en pathList ArrayList. (Primer elemento en caso de selección única) Además, el parámetro mediaType debe pasarse aquí
tipo de medio – Este es un parámetro obligatorio,
ScopedMediaPicker.MEDIA_TYPE_IMAGE solo para el selector de imágenes
ScopedMediaPicker.MEDIA_TYPE_VIDEO solo para el selector de video
ScopedMediaPicker.MEDIA_TYPE_IMAGE o ScopedMediaPicker.MEDIA_TYPE_VIDEO para ambos
Paso 4.1. Empiece a recopilar sus archivos
btnFile.setOnClickListener {
scopedMediaPicker.startFilePicker(
fileTypes = arrayListOf(
ScopedMediaPicker.PDF,
ScopedMediaPicker.DOC,
ScopedMediaPicker.PPT,
ScopedMediaPicker.XLS,
ScopedMediaPicker.TXT,
ScopedMediaPicker.ZIP
)
) { list ->
// Handle your files here
}
}
fileTypes define la matriz de tipos de archivos de soporte que desea seleccionar con el selector de archivos. Obtendrá una lista de objetos FileData que contiene 5 cosas:
fileUri (para abrir el documento use este URI)
fileInputStream (para cargar un archivo con el propósito de usar este Inputstream)
Nombre del archivo
extensión de archivo
mimeType (al abrir un URI con intención, puede usar este mimeType)
Paso 5. Devuelva los datos de la intención a su ScopedMediaPicker,
Si no sigue este paso, la devolución de llamada no devolverá la imagen / video redimensionado a Comienzo calback.
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
scopedMediaPicker.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
scopedMediaPicker.onActivityResult(requestCode, resultCode, data)
}
Entonces, sí, ahí está, consulte el ejemplo en el repositorio de GIT para obtener más información y siga publicando reseñas
Buena codificación 🙂
Licencia
Copyright 2021 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
.