Есть ли способ получить миниатюру изображений из 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