繁体   English   中英

在ICS上的缩略图中选择Picasa图片并选择图片

[英]Thumbnails and picking picasa images from gallery on ICS

我很难让Thumbnails.getThumbnail在运行ICS的Nexus S上处理picasa照片。 其他一切似乎都可行,包括从picasa中获取原始图像并进行显示,但getThumbnail似乎不起作用。 尝试使用它时出现以下错误:

E/MiniThumbFile( 1852): Got exception when reading magic, id = 5745625138093120418, disk full or mount read-only? class java.lang.IllegalArgumentException
W/MediaProvider(  540): original media doesn't exist or it's canceled.

磁盘未满,它是可读写的,该应用程序具有外部存储写入权限,并且图片确实存在于picasa中(我可以通过android Gallery应用程序查看它)。

相同的代码在Android 2.3上可以正常工作,但它采用的路径略有不同,因为2.3似乎下载了照片副本,并将实际的本地文件:// uri交给了新下载的图像,而不是为您提供了内容// uri。

这是相关代码的主要内容:

  public void addImage(Uri uri, boolean local)
  {
     ContentResolver resolver = getContentResolver();
     Uri actualUri = uri;

     Log.d(TAG, "addImage: original uri: " + uri.toString());

     if(local) {
        try {
           List<String> uriPath = uri.getPathSegments();
           String contentUri = Media.insertImage(resolver, uri.getPath(), uriPath.get(uriPath.size()-1), new String());
           actualUri = Uri.parse(contentUri);
        }
        catch(java.io.FileNotFoundException ex) {
           Log.e(TAG, "FileNotFoundException: ");
           ex.printStackTrace();
        }
     }

     Log.d(TAG, "addImage: actual uri: " + actualUri.toString());

     List<String> uriPath = actualUri.getPathSegments();
     long imageId = Long.parseLong(uriPath.get(uriPath.size() -1));

     Bitmap thumb = Thumbnails.getThumbnail(resolver, imageId, Thumbnails.MINI_KIND, null);
     if(thumb == null) {
        Log.e(TAG, "Failed to get thumbnail for our image.");
        Toast toast = Toast.makeText(getApplicationContext(), "Failed to get thumbnail for image. Please try again.", Toast.LENGTH_SHORT);
        toast.show();
        return;
     }

     uris.add(uri);
     bmps.add(thumb);
     notifyDataSetChanged();
  }

每当将新照片添加到应用程序的照片“集合”时,都会调用该方法。 如果已知它是本地图像(即:如果照片是从应用程序内部拍摄的,或者onActivityResult的data参数为null),则将local参数设置为true,然后尝试从中获取content:// uri媒体内容提供者,因此我们可以获得有效的图像ID,以传递给Thumbnails.getThumbnail。 该代码对于从“相机”应用程序(通过startActivityForResult)获取的图像以及库中本地存储在设备上的图像均适用。

我有点难过。

https://developers.google.com/picasa-web/docs/2.0/reference#media_group

如果您在使用android时遇到麻烦,请注意上面的链接和api,以及原子供稿中的media:group / media:thumbnail标签。 多数民众赞成在父元素或在这篇文章中引用的缩略图的容器

因此,为了在android中处理拇指,如果您可以构造代码以实际使用api(picasa feeds / photos / media:group等),则可能会出现像当前这样的bug问题。

示例Google / Android / Picasa 代码

API参考

另一个API参考

遇到相同的问题,这是导入/打包问题。

确保使用正确的Thumbnail类。 那里有两个。 一个用于视频,另一个用于图像。

MediaStore.Images.Thumbnails
MediaStore.Video.Thumbnails

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM