1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/MingYueChunQiu-MediaPicker

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

MediaPicker

В проекте часто требуется выбирать изображения, аудио и видео, при этом есть ограничения по размеру и времени. Не удалось найти подходящую библиотеку, поэтому была предоставлена базовая версия, которая удовлетворяет требованиям.

Возможности:

  1. Можно выбирать изображения, аудиофайлы и видео.
  2. Можно ограничить количество выбранных файлов, их размер и длительность.
  3. Можно просматривать изображения и видео и задавать количество элементов в каждой колонке.
  4. Можно настроить условия фильтрации для отображения только подходящих файлов.

Версия 0.1.8

  • Обновлены зависимости, оптимизирован код.

Версия 0.1.7

  • Проект перенесён на AndroidX, используется Kotlin.

Эффект реализации

Изображения не представлены в запросе.

Использование

1. Базовое использование

Это самый простой способ использования библиотеки с настройками по умолчанию для выбора изображений.

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Библиотека селектора для ограничения размера, времени и выбора типа файлов (изображения, аудио, видео) в мультимедиа данных Android. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/MingYueChunQiu-MediaPicker.git
git@api.gitlife.ru:oschina-mirror/MingYueChunQiu-MediaPicker.git
oschina-mirror
MingYueChunQiu-MediaPicker
MingYueChunQiu-MediaPicker
master