需要授权
就地更新时间轴项。 查看示例。
此方法支持 /upload URI,并接受具备以下特征的已上传媒体:
- 文件大小上限:10MB
- 接受的媒体 MIME 类型:
audio/*
,image/*
,video/*
请求
HTTP 请求
此方法通过两个单独的 URI 提供媒体上传功能。如需了解详情,请参阅有关媒体上传的文档。
- 上传 URI,用于媒体上传请求:
PUT https://www.googleapis.com/upload/mirror/v1/timeline/
id - 元数据 URI,适用于仅包含元数据的请求:
PUT https://www.googleapis.com/mirror/v1/timeline/
id
参数
参数名称 | 值 | 说明 |
---|---|---|
路径参数 | ||
id |
string |
时间轴项的 ID。 |
必需的查询参数 | ||
uploadType |
string |
针对 /upload URI 的上传请求的上传类型。 可接受的值包括: <ph type="x-smartling-placeholder"> |
授权
此请求需要获得以下至少一个范围的授权(详细了解身份验证和授权)。
范围 |
---|
https://www.googleapis.com/auth/glass.timeline |
https://www.googleapis.com/auth/glass.location |
请求正文
在请求正文中,提供具有以下属性的 Timeline 资源作为元数据。如需了解详情,请参阅有关媒体上传的文档。
属性名称 | 值 | 说明 | 备注 |
---|---|---|---|
可选属性 | |||
bundleId |
string |
此项目的软件包 ID。服务可以指定 bundleId 以将多项进行分组。它们显示在设备的单个顶级项下。 | 可写入 |
canonicalUrl |
string |
指向时间轴项所表示数据的规范/高质量版本的规范网址。 | 可写入 |
creator |
nested object |
创建此项的用户或群组。 | 可写入 |
displayTime |
datetime |
在时间轴中查看此内容时应显示的时间,格式遵循 RFC 3339 标准。该用户的时间轴是按显示时间按时间顺序排序的,因此这也将决定相应项在时间轴中的显示位置。如果该服务未设置,则显示时间默认为 updated 时间。 |
可写入 |
html |
string |
此项的 HTML 内容。如果为某个项同时提供了 text 和 html ,则会在时间轴中呈现 html 。允许的 HTML 元素 - 您可以在时间轴卡片中使用这些元素。
已屏蔽的 HTML 元素:这些元素及其内容已从 HTML 载荷中移除。
其他元素:系统会移除未列出的所有元素,但会保留其内容。 |
可写入 |
isBundleCover |
boolean |
此商品是否为套装封面。 如果某项内容被标记为套装封面,则它是与该商品具有相同 bundleId 的套装的入口点。它只会显示在主时间轴上,而不会在打开的内容包内显示。在主时间轴上,显示的项目包括:
|
可写入 |
location |
nested object |
与此内容相关联的地理位置。 | 可写入 |
menuItems[] |
list |
在时间轴中选择此项时将会向用户显示的菜单项列表。 | 可写入 |
menuItems[].action |
string |
控制用户选择菜单选项时的行为。允许的值包括:
|
可写入 |
menuItems[].id |
string |
此菜单项的 ID。它由应用生成,被视为不透明令牌。 | 可写入 |
menuItems[].payload |
string |
通用载荷,其含义随此 MenuItem 的操作而变化。
|
可写入 |
menuItems[].removeWhenSelected |
boolean |
如果将 CUSTOM 菜单项设置为 true,则系统会在选中相应菜单项后将其从菜单中移除。 |
可写入 |
menuItems[].values[] |
list |
对于 CUSTOM 项,是一个值列表,用于控制菜单项在其每种状态下的显示情况。必须提供 DEFAULT 状态的值。如果缺少 PENDING 或 CONFIRMED 状态,将不会显示。 |
可写入 |
menuItems[].values[].displayName |
string |
为菜单项显示的名称。如果您为内置菜单项指定此属性,则不会显示该菜单项的默认上下文语音指令。 | 可写入 |
menuItems[].values[].iconUrl |
string |
与菜单项一起显示的图标的网址。 | 可写入 |
menuItems[].values[].state |
string |
该值适用的状态。允许的值包括:
|
可写入 |
notification |
nested object |
控制此项的通知在设备上的显示方式。如果缺少这些信息,则不会生成任何通知。 | 可写入 |
notification.deliveryTime |
datetime |
应发送通知的时间。 | 可写入 |
notification.level |
string |
说明通知的重要性。允许的值包括:
|
可写入 |
recipients[] |
list |
此内容的共享对象或群组列表。 | 可写入 |
sourceItemId |
string |
不透明字符串,可用于将时间轴项映射到您自己的服务中的数据。 | 可写入 |
speakableText |
string |
此项内容的可朗读版本。与 READ_ALOUD 菜单项搭配使用时,可以使用此字段提供文本,让大声朗读出来更加清晰,或者为 Glass 上直观显示的内容提供更详细的信息。Glassware 还应指定 talkableType 字段,在提供额外上下文的情况下(例如,当用户请求在通知后大声读出内容时),系统会在此文本之前读出该字段。 |
可写入 |
speakableType |
string |
此项目类型的可朗读说明。如果其他上下文有用,例如,当用户请求在收到通知后大声朗读项目时,系统就会在读取项目内容前向用户读出。 这应该是个简短的名词短语,例如“电子邮件”“短信”或“每日星球新闻动态”。 建议通过 Glassware 为每个时间轴项填充此字段,即使相应项不包含 talkableText 或文本,以便用户无需查看屏幕即可了解相应项的类型。 |
可写入 |
text |
string |
此项的文字内容。 | 可写入 |
title |
string |
此项的标题。 | 可写入 |
响应
如果成功,此方法将在响应正文中返回时间轴资源。
示例
注意:此方法的代码示例并未列出所有受支持的编程语言(请参阅客户端库页面,查看受支持的语言列表)。
使用 Java 客户端库。
import com.google.api.services.mirror.Mirror;
import com.google.api.services.mirror.model.NotificationConfig;
import com.google.api.services.mirror.model.TimelineItem;
import java.io.IOException;
public class MyClass {
// ...
/**
* Update a timeline item in the user's Glass with an optional notification and attachment.
*
* @param service Authorized Mirror service.
* @param itemId ID of the timeline item to update.
* @param newText timeline item's text.
* @param newNotificationLevel Optional notification level, supported values
* are {@code null} and "AUDIO_ONLY".
* @return Updated timeline item on success, {@code null} otherwise.
*/
public static TimelineItem updateTimelineItem(Mirror service, String itemId, String newText,
String newNotificationLevel) {
try {
// First retrieve the timeline item from the API.
TimelineItem timelineItem = service.timeline().get(itemId).execute();
// Update the timeline item's metadata.
timelineItem.setText(newText);
if (newNotificationLevel != null && newNotificationLevel.length() > 0) {
timelineItem.setNotification(new NotificationConfig().setLevel(newNotificationLevel));
} else {
timelineItem.setNotification(null);
}
return service.timeline().update(itemId, timelineItem).execute();
} catch (IOException e) {
System.err.println("An error occurred: " + e);
return null;
}
}
// ...
}
使用 .NET 客户端库。
using System;
using System.IO;
using Google.Apis.Mirror.v1;
using Google.Apis.Mirror.v1.Data;
public class MyClass {
// ...
/// <summary>
/// Update a timeline item in the user's Glass with an optional
/// notification and attachment.
/// </summary>
/// <param name='service'>Authorized Mirror service.</param>
/// <param name='itemId'>ID of the timeline item to update.</param>
/// <param name='newText'>Timeline Item's text content.</param>
/// <param name='newNotificationLevel'>
/// Optional notification level, supported values are null and
/// "AUDIO_ONLY".
/// </param>
/// <returns>
/// Updated timeline item on success, null otherwise.
/// </returns>
public static TimelineItem UpdateTimelineItem(MirrorService service,
String itemId, String newText, String newNotificationLevel) {
try {
// First retrieve the timeline item from the API.
TimelineItem timelineItem = service.Timeline.Get(itemId).Fetch();
// Update the timeline item's metadata.
timelineItem.Text = newText;
if (!String.IsNullOrEmpty(newNotificationLevel)) {
timelineItem.Notification = new NotificationConfig() {
Level = newNotificationLevel
};
} else {
timelineItem.Notification = null;
}
return service.Timeline.Update(timelineItem, itemId).Fetch();
} catch (Exception e) {
Console.WriteLine("An error occurred: " + e.Message);
return null;
}
}
// ...
}
使用 PHP 客户端库。
/**
* Update a timeline item in the user's Glass with an optional
* notification and attachment.
*
* @param Google_MirrorSservice $service Authorized Mirror service.
* @param string $itemId ID of the timeline item to update.
* @param string $newText timeline item's text (can be HTML content).
* @param string $newNotificationLevel Optional notification level,
* supported values are {@code null} and "AUDIO_ONLY".
* @return Google_TimelineItem Updated timeline item on success,
* null otherwise.
*/
function updateTimelineItem($service, $itemId, $newText, $newNotificationLevel) {
try {
$timelineItem = $service->timeline->get($itemId);
$timelineItem->setText($newText);
if ($notificationlevel != null) {
$notification = new Google_NotificationConfig();
$notification->setLevel($newNotificationLevel);
$timelineItem->setNotification($notification);
} else {
$timelineItem->setNotification(null);
}
return $service->timeline->update($itemId, $timelineItem);
} catch (Exception $e) {
print 'An error occurred: ' . $e->getMessage();
return null;
}
}
使用 Python 客户端库。
import io
from apiclient import errors
from apiclient.http import MediaIoBaseUpload
# ...
def update_timeline_item(service, item_id, new_text,
new_notification_level=None):
"""Update a timeline item in the user's Glass.
Args:
service: Authorized Mirror service.
item_id: ID of the timeline item to update.
new_text: Timeline item's text (can be HTML content).
new_content_type: Optional attachment's content type (supported content
types are 'image/*', 'video/*' and 'audio/*').
new_attachment: Optional attachment as data string.
new_notification_level: Optional notification level, supported values are
None and 'AUDIO_ONLY'.
Returns:
Updated timeline item on success, None otherwise.
"""
try:
# First retrieve the timeline item from the API.
timeline_item = service.timeline().get(id=item_id).execute()
# Update the timeline item's metadata.
timeline_item['text'] = new_text
if new_notification_level:
timeline_item['notification'] = {'level': new_notification_level}
elif 'notification' in timeline_item:
timeline_item.pop('notification')
return service.timeline().update(id=item_id, body=timeline_item).execute()
except errors.HttpError, error:
print 'An error occurred: %s' % error
return None
使用 Ruby 客户端库。
##
# Update a timeline item in the user's glass.
#
# @param [Google::APIClient] client
# Authorized client instance.
# @param [String] item_id
# ID of the timeline item to update.
# @param [String] new_text
# Timeline item's new text.
# @param [String] new_notification_level
# Optional new notification level, supported values are nil and 'AUDIO_ONLY'.
# @return [Google::APIClient::Schema::Mirror::V1::TimelineItem]
# Updated timeline item instance if successful, nil otherwise.
def update_timeline_item(client, item_id, new_text, new_notification_level)
mirror = client.discovered_api('mirror', 'v1')
result = client.execute(
:api_method => mirror.timeline.get,
:parameters => { 'id' => item_id })
if result.success?
timeline_item = result.data
timeline_item.text = new_text
if new_notification_level
timeline_item.notification = { 'level' => new_notification_level }
else
timeline_item.notification = nil
end
result = client.execute(
:api_method => mirror.timeline.update,
:body_object => timeline_item,
:parameters => { 'id' => item_id })
if result.success?
return result.data
end
end
puts "An error occurred: #{result.data['error']['message']}"
end
使用 Go 客户端库。
import (
"code.google.com/p/google-api-go-client/mirror/v1"
"fmt"
)
// UpdateTimelineItem updates a timeline item in the user's timeline with an
// optional notification and attachment.
func UpdateTimelineItem(g *mirror.Service, itemId string, newNotificationLevel string) (
*mirror.TimelineItem, error) {
t, err := g.Timeline.Get(itemId).Do()
if err != nil {
fmt.Printf("An error occurred: %v\n", err)
return nil, err
}
t.Text = newText
if newNotificationLevel != "" {
t.Notification = &mirror.NotificationConfig{Level: newNotificationLevel}
} else {
t.Notification = nil
}
r, err := g.Timeline.Update(itemId, t).Do()
if err != nil {
fmt.Printf("An error occurred: %v\n", err)
return nil, err
}
return r, nil
}
不使用客户端库。
PUT /mirror/v1/timeline/timeline item id HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer auth token
Content-Type: application/json
Content-Length: 26
{ "text": "Hello world" }