处理Google云端硬盘Android API(GDAA)中的缩略图

时间:2015-04-29 12:53:42

标签: google-drive-android-api

将应用从REST API移植到GDAA时,我遇到了以下问题。
该应用程序需要根据用户选择下载一些(数千)JPEG图像。在应用程序中解决这个问题的方法是首先使用REST API的这个结构下载缩略图版本:

  private static InputStream getCont(String rsid, boolean bBig){
    InputStream is = null;
    if (rsid != null) try {
      File gFl = bBig ?
      mGOOSvc.files().get(rsid).setFields("downloadUrl"  ).execute():
      mGOOSvc.files().get(rsid).setFields("thumbnailLink").execute();
      if (gFl != null){
        GenericUrl url = new GenericUrl(bBig ?  gFl.getDownloadUrl() : gFl.getThumbnailLink());
        is = mGOOSvc.getRequestFactory().buildGetRequest(url).execute().getContent();
      }
    } catch (UserRecoverableAuthIOException uraEx) {
      authorize(uraEx.getIntent());
    } catch (GoogleAuthIOException gauEx) {}
    catch (Exception e) { }
    return is;
  }

它允许获得缩略图'或者'成熟的'基于 bBig 标志的图像版本。用户可以从列表中选择一个缩略图,然后进行完整的图像下载(当然,这一切都受到基于磁盘的LRU缓存的支持)。 问题是,GDAA没有选择减小尺寸/缩略图版本的对象(AFAIK)的选项,所以我不得不求助于两个API,这使代码更复杂{ {3}}。针上说明了资源ID' REST所需的可能无法立即获得 所以,问题是:有没有办法向GDAA询问缩略图'文件的版本?

1 个答案:

答案 0 :(得分:0)

更新:我在讨论请求字段时遇到错误。

正如Ofir所说,你无法通过Drive Android API获取缩略图,并且可以获取Drive Java Client Library的缩略图。这个页面是一个非常好的入门入门:

https://developers.google.com/drive/v3/web/quickstart/android

奇怪的是,我无法让请求的字段部分在快速启动时工作。正如我所经历的那样,你必须以不同的方式要求这些领域。

由于您正在执行自定义字段请求,因此您必须确保添加所需的其他字段。以下是我如何使用它:

Drive.Files.List request = mService.files()
                    .list()
                    .setFields("files/thumbnailLink, files/name, files/mimeType, files/id")
                    .setQ("Your file param and/or mime query");

FileList files = request.execute();
files.getFiles();  //Each File in the collection will have a valid thumbnailLink

示例查询可能是:

"mimeType = 'image/jpeg' or mimeType = 'video/mp4'"

希望这有帮助!