Google 驱动器 Android API 中缩略图的处理 (GDAA)
Handling of Thumbnails in Google Drive Android API (GDAA)
从 REST API to GDAA 移植应用程序时,我 运行 遇到了以下问题。
该应用程序需要根据用户 selection 下载一些(数千张)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 标志获取图像的 'thumbnail' 或 'full-blown' 版本。用户可以 select 列表中的缩略图,然后是完整的图像下载(当然,所有这些都由基于磁盘的 LRU 缓存支持)。
问题是,GDAA 没有选项来要求 缩小尺寸/缩略图 版本的对象 (AFAIK),所以我不得不求助于结合两个 APIs ,这使得代码更加复杂then I like (bottom of the page)。需要指出的是,REST 所需的 'Resource ID' 可能不会立即可用。
所以,问题是:有没有办法向 GDAA 询问文档的 'thumbnail' 版本?
Drive Android API 目前无法下载缩略图,遗憾的是我无法给出何时可用的时间表。在那之前,Drive Java 客户端库是在 Android.
上获取缩略图的最佳方式
如果您继续针对我们的问题跟踪器提交功能请求,我们将不胜感激:https://code.google.com/a/google.com/p/apps-api-issues/
这让我们的团队在内部更清楚地了解请求,并且当我们发布更新时,问题将被标记为已解决。
更新:我在请求字段的讨论中出错了
正如 Ofir 所说,您无法使用云端硬盘 Android API 获取缩略图,而您 可以 使用云端硬盘 Java 获取缩略图] 客户端库。此页面是一本非常好的入门入门读物:
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'"
希望对您有所帮助!
从 REST API to GDAA 移植应用程序时,我 运行 遇到了以下问题。
该应用程序需要根据用户 selection 下载一些(数千张)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 标志获取图像的 'thumbnail' 或 'full-blown' 版本。用户可以 select 列表中的缩略图,然后是完整的图像下载(当然,所有这些都由基于磁盘的 LRU 缓存支持)。
问题是,GDAA 没有选项来要求 缩小尺寸/缩略图 版本的对象 (AFAIK),所以我不得不求助于结合两个 APIs ,这使得代码更加复杂then I like (bottom of the page)。需要指出的是,REST 所需的 'Resource ID' 可能不会立即可用。
所以,问题是:有没有办法向 GDAA 询问文档的 'thumbnail' 版本?
Drive Android API 目前无法下载缩略图,遗憾的是我无法给出何时可用的时间表。在那之前,Drive Java 客户端库是在 Android.
上获取缩略图的最佳方式如果您继续针对我们的问题跟踪器提交功能请求,我们将不胜感激:https://code.google.com/a/google.com/p/apps-api-issues/
这让我们的团队在内部更清楚地了解请求,并且当我们发布更新时,问题将被标记为已解决。
更新:我在请求字段的讨论中出错了
正如 Ofir 所说,您无法使用云端硬盘 Android API 获取缩略图,而您 可以 使用云端硬盘 Java 获取缩略图] 客户端库。此页面是一本非常好的入门入门读物:
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'"
希望对您有所帮助!