В проекте часто требуется выбирать изображения, аудио и видео, при этом есть ограничения по размеру и времени. Не удалось найти подходящую библиотеку, поэтому была предоставлена базовая версия, которая удовлетворяет требованиям.
Возможности:
Изображения не представлены в запросе.
Это самый простой способ использования библиотеки с настройками по умолчанию для выбора изображений.
final ArrayList<String> list = new ArrayList<>();
list.add(MediaSuffixType.VideoSuffixType.TYPE_MP4);
tvTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPicker.init(MainActivity.this)
// .setMediaPickerConfig(new MediaPickerConfig.Builder()
// .setThemeConfig(new MediaPickerThemeConfig.Builder()
// .buildDarkTheme())
// .setMediaPickerType(MediaPickerType.TYPE_VIDEO)
// .setLimitDuration(10 * 1000)
// .setLimitSize(10 * 1024 * 1024L)
// .setMaxSelectMediaCount(3)
// .setStartPreviewByThird(true)
// .setColumnCount(3)
// .setLimitSuffixTypeList(list)
// .setMediaPickerFilter(new MediaPickerFilter() {
// @Override
// public boolean filter(MediaInfo info) {
// if (info.getSize() > 10 * 1024 * 1024L) {
// return true;
// }
// return false;
// }
//
// @Override
// public String getFilteredHint() {
// return "测试";
// }
//
// @Override
// public boolean hideFiltered() {
// return false;
// }
// })
// .setFilterLimitSuffixType(true)
// .setFilterLimitMedia(true)
// .build())
.pick();
}
});
Полученный результат:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null && requestCode == MP_REQUEST_START_MEDIA_PICKER && resultCode == RESULT_OK) {
ArrayList<MediaInfo> list = data.getParcelableArrayListExtra(EXTRA_PICKED_MEDIA_LIST);
for (MediaInfo info : list) {
Log.d("份", info.getTitle() + " fds " + info.getName() + " " +
``` **Текст запроса:**
info.getFilePath() + " " + info.getSize() + " " + info.getDuration() + " " + info.getBucketId() + " " + info.getBucketName()); } } }
**Перевод:**
инфо.getFilePath() + " " + инфо.getSize() + " " + инфо.getDuration() + " " + инфо.getBucketId() + " " + инфо.getBucketName())); } } }
**Текст запроса:**
public class MediaInfo: private String title;//标题 private String name;//名称(带扩展名) private MediaPickerType type;//多媒体类型 private String suffixType;//后缀名类型(例如:.mp4) private String filePath;//视频路径 private String thumbnail;//缩略图 private long addDate;//添加到Media Provider的时间 private long duration;//时长 private long size;//大小 private String bucketId;//多媒体所属文件夹ID private String bucketName;//多媒体所属文件夹名称
**Перевод:**
публичный класс МедиаИнфо: приватная строка title; // заголовок приватная строка name; // имя (с расширением) приватный тип MediaPickerType; // тип мультимедиа приватная строка suffixType; // тип суффикса (например, .mp4) приватная строка filePath; // путь к видео приватная строка thumbnail; // миниатюра приватное длинное addDate; // время добавления в Media Provider приватное долгое duration; // длительность приватное долгое size; // размер приватная строка bucketId; // идентификатор папки мультимедиа приватная строка bucketName; // название папки мультимедиа
**Текст запроса:**
在MediaPicker主要是提供MediaPickerControlable接口实例,默认提供的是MediaPickerControl子类
**Перевод:**
В MediaPicker в основном предоставляется экземпляр интерфейса MediaPickerControlable, по умолчанию предоставляется подкласс MediaPickerControl.
**Текст запроса:**
public class MediaPicker {
private static final MediaPicker INSTANCE;//单例 private MediaPickerControlable mControl;
private MediaPicker() {
}
static {
INSTANCE = new MediaPicker();
}
public static MediaPickerControlable init(@NonNull Activity activity) {
return init(activity, new MediaPickerStore(activity), null);
}
public static MediaPickerControlable init(@NonNull Activity activity, MediaPickerStoreable store,
MediaPickerInterceptable intercept) {
INSTANCE.mControl = new MediaPickerControl(activity, store, intercept);
return INSTANCE.mControl;
}
public static MediaPickerControlable init(@NonNull Fragment fragment) {
return init(fragment, new MediaPickerStore(fragment), null);
}
public static MediaPickerControlable init(@NonNull Fragment fragment, MediaPickerStoreable store,
MediaPickerInterceptable intercept) {
INSTANCE.mControl = new MediaPickerControl(fragment, store, intercept);
return INSTANCE.mControl;
}
public static MediaPicker getInstance() {
return INSTANCE;
}
public MediaPickerControlable getMediaPickerControl() {
return INSTANCE.mControl;
}
public static ImageEngine getImageEngine() {
return INSTANCE.mControl.getImageEngine();
}
public static MediaPickerFilter getMediaPickerFilter() {
return INSTANCE.mControl.getMediaPickerStore().getMediaPickerConfig().getMediaPickerFilter();
}
}
**Перевод:**
общественный класс MediaPicker {
приватный статический окончательный MediaPicker INSTANCE; // одиночка частный MediaPickerControlable mКонтроль;
частный MediaPicker () {
}
статический {
ИНСТАНЦИЯ = новый MediaPicker ();
}
общедоступный статический MediaPickerControlable init (@NonNull действие активности) {
вернуть init (активность, новый MediaPickerStore (активность), ноль);
}
общедоступная статическая MediaPickerControlable init (@NonNull активность активности, MediaPickerStoreable хранилище,
MediaPickerInterceptable перехватить) {
INSTANCE.mКонтроль = новый MediaPickerControl (активность, хранилище, перехват);
возврат ИНСТАНЦИИ.mКонтроль;
}
общедоступное статическое управление MediaPickerControlable init (@NonNull фрагмент фрагмента) {
вернуться к началу (фрагмент, новый MediaPickerStore (фрагмент), ноль);
}
общедоступная статическая MediaPickerControlable init (@NonNull фрагмент фрагмента, MediaPickerStoreable хранилище,
MediaPickerInterceptable перехват) {
INSTANCE.mКонтроль = новый MediaPickerControl (фрагмент, хранилище, перехват);
возвращение ИНСТАНЦИИ.mКонтроль;
}
общедоступная статическая медиапикер getInstance () {
возвратная ИНСТАНЦИЯ;
}
публичное управление MediaPickerControlable getMediaPickerControl () {
возврат INSTANCE.mКонтроль;
}
общедоступный статический ImageEngine getImageEngine () {
возвратный экземпляр.mКонтроль.getImageEngine ();
}
общедоступный статический фильтр MediaPicker getMediaPickerFilter () {
возвращаемый экземпляр.mКонтроль.getMediaPickerStore ().getMediaPickerConfig ().getMediaPickerFilter ();
}}
**Текст запроса:**
В СНАЧАЛА получить MediaPickerControlable после, установить соответствующий конфигурация, MediaPickerControlable внутри держать MediaPickerStoreable интерфейс, по умолчанию предоставить подкласс реализация это MediaPickerStore, MediaPickerStore главным образом использоваться для держать MediaPickerConfig, проводить конфигурация установка.
**Перевод:**
Сначала получив MediaPickerControlable, установите соответствующую конфигурацию. MediaPickerControlable содержит интерфейс MediaPickerStoreable. По умолчанию предоставляется реализация подкласса — MediaPickerStore. MediaPickerStore в основном используется для хранения MediaPickerConfig и настройки конфигурации.
**Текст запроса:**
MediaPickerControlable пакет MediaPickerStoreable использование с реализация средний слой перехватчик, удобный реализация средний дополнительный операция, поэтому предоставлять MediaPickerInterceptable интерфейс, по умолчанию предоставлять пустой реализация подкласс, можно против все метод проводить перехват слушать
**Перевод:**
MediaPickerControlable оборачивает MediaPickerStoreable и использует промежуточный слой-перехватчик для удобной реализации дополнительных операций. Поэтому предоставляется интерфейс MediaPickerInterceptable, который по умолчанию предоставляет пустую реализацию подкласса. Можно перехватывать и прослушивать все методы.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )