Cómo cargar miniaturas de video usando la biblioteca cuadrada picasso?
Actualmente estoy cargando las miniaturas de imágenes de MediaStore usando picasso en el ListView
con el fragmento siguiente: ( video.getData()
devuelve la ruta real de la imagen como mnt/sdcard/...
)
Picasso.with(this.context) .load(new File(photo.getData())) .resize(50, 50).config(config) .centerCrop() .into(viewHolder.imageViewItem);
Ahora estoy e incapaz de cargar las Miniaturas de Video de MediaStore simplemente pasando el video.getData()
lugar de photo.getData()
?
- RecyclerView desplazamiento laggy
- Set Cookie para Picasso
- La biblioteca de Picasso dejó de funcionar hoy con los acoplamientos del cuadro del gráfico del facebook
- Memoria caché de picasso para Android
- Borrar memoria caché de Picasso
- Google Map personaliza la imagen de marcador con picasso, se actualiza dos veces para mostrar la imagen
- Android Picasso - Marcador de posición y estilo de imagen de error
- ¿Puedo cargar una imagen con Picasso en la barra de acción?
- ¿Cómo acceder a Drawable cuando se utiliza Picasso?
- Conseguir que Picasso recupere las imágenes futuras
- La forma más fácil de usar Picasso en la notificación (icono)
- Imágenes grandes (desde archivo) no se cargan en Picasso, no se ha observado ningún error obvio
- Transición de elementos compartidos de Android: transformación de un ImageView de un círculo a un rectángulo y viceversa
Primero debes crear VideoRequestHandler
public class VideoRequestHandler extends RequestHandler{ public String SCHEME_VIDEO="video"; @Override public boolean canHandleRequest(Request data) { String scheme = data.uri.getScheme(); return (SCHEME_VIDEO.equals(scheme)); } @Override public Result load(Request data, int arg1) throws IOException { Bitmap bm = ThumbnailUtils.createVideoThumbnail(data.uri.getPath(), MediaStore.Images.Thumbnails.MINI_KIND); return new Result(bm,LoadedFrom.DISK); } }
Después de esto
VideoRequestHandler videoRequestHandler; Picasso picassoInstance;
Construir sólo una vez
videoRequestHandler = new VideoRequestHandler(); picassoInstance = new Picasso.Builder(context.getApplicationContext()) .addRequestHandler(videoRequestHandler) .build();
A continuación, cargue el archivo desde la ruta de acceso
picassoInstance.load(VideoRequestHandler.SCHEME_VIDEO+":"+filepath).into(holder.videoThumbnailView);
Antes, tenías dos opciones:
1) Haga una llamada de antemano, cuando estaba recuperando sus videos por ejemplo y almacenando el mapa de bits:
Bitmap thumbnailBitmap = MediaStore.Video.Thumbnails.getThumbnail(content, id, MediaStore.Video.Thumbnails.MINI_KIND, options);
2) Creación de un descargador personalizado (no verificado para los medios locales)
Pero ahora, con Picasso 2.4, puede crear un RequestHandler. Usted puede echar un vistazo en esta página por ejemplo: http://blog.jpardogo.com/requesthandler-api-for-picasso-library/
En mi uso actual, busco la ruta de miniaturas y luego llamo a Picasso con esa ruta. Para obtener la ruta de miniatura, me refería a: android obtener miniatura de vídeo PATH, no Bitmap .
public void bindTo(MediaListHolder mediaListRowHolder, int i) { DataPictures message = itemList.get(i); try { Uri uri = Uri.fromFile(new File(message.getFilePath())); if (message.getFileType().equalsIgnoreCase("video")) { Bitmap bmThumbnail = ThumbnailUtils.extractThumbnail(ThumbnailUtils.createVideoThumbnail(message.getFilePath(), MediaStore.Video.Thumbnails.FULL_SCREEN_KIND), MAX_WIDTH, MAX_HEIGHT); mediaListRowHolder.thumbnail.setImageBitmap(bmThumbnail); } else { Picasso.with(ApplicationSingleton.getInstance()).load(uri) .resize(size, size) .placeholder(R.drawable.logo_slogan) .into(mediaListRowHolder.thumbnail); } Log.i(TAG, "bindTo: "); } catch (Exception e) { e.printStackTrace(); } }
- Abrir la página de Facebook en la aplicación de Facebook (si está instalada) en Android
- ¿Cómo puedo alejar el panel de la línea de tiempo de Eclipse SDK?