1

我很难让 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.

磁盘未满,可读写,app有外存写权限,picasa上确实存在图片(我可以通过android Gallery app查看)。

相同的代码在 Android 2.3 上运行良好,但路径略有不同,因为 2.3 似乎下载照片的副本并将实际的本地文件:// 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 的数据参数为空),本地参数设置为 true,我尝试从媒体内容提供者,因此我们可以获得有效的图像 ID 以传递给 Thumbnails.getThumbnail。该代码适用于从相机应用程序(通过 startActivityForResult)获取的图像,以及存储在设备本地的图库中的图像。

我有点难过。

4

2 回答 2

0

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

如果您在 android 中难以获取缩略图,请注意上面的链接和 api 以及 atom 提要中的 media:group/media:thumbnail 标记。那是这篇文章中提到的缩略图的父元素或容器

因此,为了在 android 中处理 thumbs,如果您可以构建代码以实际使用 api(picasa 提要/照片/媒体:组等),您可能会遇到更少的错误问题,例如目前的问题。

示例 google/android/picasa代码

api 参考

另一个 api 参考

于 2012-05-28T14:17:42.327 回答
0

有同样的问题,这是一个导入/打包问题。

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

MediaStore.Images.Thumbnails
MediaStore.Video.Thumbnails
于 2012-09-18T12:28:17.103 回答