列出和检索媒体项

用户在 Google 相册中配置了环境设备并选择了媒体来源后,您的应用就可以列出并检索这些媒体内容以供显示。

前期准备

  • 检查设备设置:确保您已成功为用户创建并配置设备。
  • 了解 Ambient API 流程:查看 Ambient API 流程,了解整个流程,尤其是涉及轮询 mediaSourcesSet 的步骤。

针对 mediaSourcesSet 的投票

在列出设备的媒体项之前,用户必须已在 Google 相册应用中选择要与您的应用分享的照片。您的应用必须轮询设备,以确定用户何时做出了此选择。

定期针对特定 deviceId 调用 devices.get 方法。监控 AmbientDevice 响应中的 mediaSourcesSet 字段。初始值为 false。用户成功选择媒体来源后,此字段将更改为 true。

AmbientDevice 响应包含一个 pollingConfig,其中包含一个 pollInterval,您应将其作为轮询频率的指南。

列出媒体项

当设备的 mediaSourcesSet 为 true 时,您可以开始提取用户选择的媒体项。

  1. 使用 mediaItems.list 端点:向 https://photosambient.googleapis.com/v1/mediaItems 发出 GET 请求,并在路径中提供 deviceId。

  2. 处理分页(如有必要):响应可能会分页。使用 pageSize 参数指定要返回的项数上限,并使用之前响应中的 pageToken 检索后续页面的结果。

  3. 处理媒体内容:响应将包含一个 AmbientMediaItem 对象数组,每个对象代表一项所选媒体内容。这些对象包含以下重要详细信息:

    • id:媒体项的唯一标识符。
    • creationTime:媒体项的创建时间戳。
    • mediaFile:包含用于访问实际内容的详细信息的对象。

mediaFile 字段包含 baseUrl。您将使用此 baseUrl 构建网址,以访问不同分辨率或格式的媒体内容。

基本网址

通过 Google 相册 API 中的基准网址,您可以访问媒体内容的原始字节,从而让您的应用能够下载或显示这些内容。在列出相册(Library API)或访问媒体内容(Library API 和 Picker API)时,这些网址会包含在响应中。请注意,基本网址需要其他参数才能正常运行。

对于 Picker API:

所有 PickedMediaItem.mediaFile 对象都包含 baseUrl。

基本网址在 60 分钟内保持有效,但如果用户通过其 Google 账号设置撤消应用的权限,则可能会提前失效。

对于 Library API:

基本网址将保持有效状态 60 分钟。

基准网址包括以下类别:

  • baseUrl:直接访问照片、视频缩略图或下载视频字节。
  • coverPhotoBaseUrl:直接访问相册的封面照片。
  • profilePictureBaseUrl:直接访问 mediaItem 所有者的个人资料照片。

图片基准网址

以下是可与图片基准网址一起使用的参数选项列表:

参数
w、h

说明

宽度参数 w 和高度参数 h。

要访问图片媒体内容(例如照片或视频缩略图),您必须指定计划在应用中显示的尺寸(以便在保留宽高比的同时将图片调整到相应尺寸)。为此,请将基准网址与所需的尺寸进行连接,如示例所示。

示例:

base-url=wmax-width-hmax-height

以下示例显示宽度不超过 2048 px 且高度不超过 1024 px 的媒体内容:

https://lh3.googleusercontent.com/p/AF....VnnY=w2048-h1024
c

说明

剪裁参数 c。

如要将图片剪裁为您指定的准确宽度和高度,请将基准网址与可选参数 -c 以及强制参数 w 和 h 进行连接。

图片尺寸(以像素为单位)应在 [1, 16383] 的范围内。如果图片的宽度或高度超过所请求的尺寸,则对其进行缩放和剪裁(保持宽高比)。

示例:

base-url=wmax-width-hmax-height-c

在此示例中,应用显示的媒体内容尺寸恰好为 256 px(宽)x 256 px(高),正如以下缩略图的尺寸:

https://lh3.googleusercontent.com/p/AF....VnnY=w256-h256-c
d

说明

下载参数 d。

如要下载保留除位置元数据之外所有 Exif 元数据的图片,请将基准网址与 d 参数进行连接。

示例:

base-url=d

在此示例中,应用下载的图像包含除位置元数据之外的所有元数据:

https://lh3.googleusercontent.com/p/Az....XabC=d

视频基准网址

以下是可与视频基准网址一起使用的参数选项列表:

参数
dv

说明

如需访问视频 mediaItem 的字节,请将 baseUrl 与下载视频参数 dv 进行连接。

dv 参数用于请求原始视频的高质量转码版本。此参数与 w 和 h 参数不兼容。

视频下载的基本网址可能需要几秒钟才能返回字节。

使用此参数之前,请检查媒体项的 mediaMetadata.status 字段是否为 READY。 否则,如果您的媒体项尚未完成处理,您可能会收到错误。

示例:

base-url=dv

以下示例展示了如何下载视频的字节:

https://lh3.googleusercontent.com/p/AF....BsdZ=dv
w、h、c 和 d

说明

如需访问视频的缩略图,请使用任意图片基准网址参数。

默认情况下,所有视频缩略图都包含一个播放按钮叠加层。如需移除此叠加层,请参阅 -no 参数。

示例:

如需查看示例,请参阅图片基准网址表格。

no

说明

移除缩略图叠加层,即 no 参数。

如果您想检索不含播放按钮叠加层的视频缩略图,请将基准网址与 no 参数进行连接。

no 参数必须与至少一个图片基准网址参数搭配使用。

示例:

base-url=wmax-width-hmax-height-no

以下示例显示了一个尺寸恰好为 1280 px(宽)x 720 px(高)且不包含播放按钮叠加层的视频缩略图:

https://lh3.googleusercontent.com/p/AF....VnnY=w1280-h720-no

动态照片基准网址

动态照片同时包含照片和视频元素。您可以针对动态照片 baseUrl 请求使用图片基准网址或视频基准网址中的参数。

参数
dv

说明

如需检索动态照片媒体项的视频元素,请使用 dv 参数,就像从视频基准网址下载一样。

w、h、c 和 d

说明

如需检索动态照片媒体内容的照片元素,请使用图片基准网址的格式。

内容政策和过滤

Google 相册默认会对电视或数字显示屏等共享设备上显示的图片和视频应用标准内容过滤。此过滤条件旨在排除以下内容,从而优化观看体验:

  • 功能型图片(例如屏幕截图、文档、收据)。
  • 可能在大屏幕上呈现效果不佳的图片(例如,分辨率过低、模糊、颗粒感过重)。
  • 被标识为高度个人化或敏感的内容,可能不适合在共享环境中公开展示。

所有内容过滤都是自动进行的。为了让用户更好地控制显示的内容,您可以允许他们手动选择和更新用于环境显示的媒体源。

后续步骤

  • 示例应用:我们的示例应用包含列出和检索媒体项的示例。如需了解详情,请查看 checkMediaSourcesSet 和 fetch_media_item_list 函数。
  • 参考文档:查看有关媒体项的全面参考文档,详细了解所有可用的方法、请求和响应参数以及错误代码。