Есть ли способ получить миниатюру изображений из USB OTG хранилища, подключенного к Android без копирования полного изображения

Я пытаюсь импортировать выбранные изображения с USB-накопителя, подключенного к мобильному телефону (Nexus 6), который не отображается как pendrive в качестве каталогов внешнего хранилища. Я использовал эту библиотеку: https://github.com/mjdev/libaums При использовании этой библиотеки я должен сначала скопировать все изображения с USB в локальный кеш, и оттуда я могу показать миниатюру, чтобы выбрать, какой импортировать. не хочу копировать все изображения, я просто хочу получить эскизы и копировать только выбранные изображения. Так есть ли способ получить миниатюры с USB-накопителя. Я чувствую, ES File Explorer и другие проводники (в зависимости от того, что) могут обнаружить USB-Pendrive, они не копируют файлы для отображения миниатюр.

1 ответ

Да, ты можешь,

Bitmap getThumbnail(UsbFile file,int targetWidth,int targetHeight){

        InputStream is = UsbFileStreamFactory.createBufferedInputStream(file,mSelectedDevice.getPartitions().get(0).getFileSystem());
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;

        BitmapFactory.decodeStream(is, null, options);

        Boolean scaleByHeight = Math.abs(options.outHeight - targetHeight) >= Math.abs(options.outWidth - targetWidth);

        if(options.outHeight * options.outWidth * 2 >= 200*200*2){
            // Load, scaling to smallest power of 2 that'll get it <= desired dimensions
            double sampleSize = scaleByHeight
                    ? options.outHeight / targetHeight
                    : options.outWidth / targetWidth;
            options.inSampleSize =
                    (int)Math.pow(2d, Math.floor(
                            Math.log(sampleSize)/Math.log(2d)));
        }

        // Do the actual decoding
        options.inJustDecodeBounds = false;

        // Let's load just the part of the image necessary for creating the thumbnail, not the whole image
        Bitmap thumbnail = BitmapFactory.decodeStream(is, null, options);
        return thumbnail;
    }

В настоящее время доступны тонны открытых ресурсов. Одним из них является AnExplorer, который поддерживает USB OTG-хранилище. Проверьте AnExplorer

Другие вопросы по тегам