在Glassware更新时间线卡后,是否可以在Glass上只显示更新的时间线卡。目前,我可以在Glass上看到旧的时间线卡以及更新的时间线卡,但显然有不同的时间戳。
以下是对代码的更多解释: - 有两个java类,NewUserBootstrapper和NotifyServlet。 NewUserBootstrapper负责引导,包括身份验证,插入联系和插入订阅。这是用于插入时间轴项目作为引导的一部分的代码。
// Send a timeline item
TimelineItem timelineItem = new TimelineItem();
timelineItem.setText("Hello");
timelineItem.setNotification(new NotificationConfig().setLevel("DEFAULT"));
TimelineItem insertedItem = MirrorClient.insertTimelineItem(credential, timelineItem);
现在,在NotifyServlet中,作为“记笔记”语音命令的一部分,服务被通知时间线的更改后,NotifyServlet会尝试更新同一时间轴项目的文本。
if (notification.getCollection().equals("timeline")) {
// Get the impacted timeline item
TimelineItem timelineItem =
mirrorClient.timeline().get(notification.getItemId()).execute();
//Take a note
if (notification.getUserActions().contains(new UserAction().setType("LAUNCH")))
{
final TimelineItem noteItem = mirrorClient.timeline()
.get(notification.getItemId()).execute();
final String spokenText = noteItem.getText();
if ( spokenText.toUpperCase().contains("DONE")
|| spokenText.toUpperCase().contains("LIST"))
{
noteItem.setText("Hello Glassware");
MirrorClient.
getMirror(credential).timeline().update(notification.getItemId(),
noteItem).execute();
}
}
}
时间卡的更新确实发生了,但是我可以看到两张卡,一张带有“Hello”文本,另一张带有“Hello Glassware”文本,但带有不同的时间戳。 我期待只看到更新的时间线卡。
答案 0 :(得分:0)
我认为这里的问题是你正在尝试更新错误的卡片。虽然您将原始卡存储为insertedItem
,但您可以使用notification
的ID发布更新。
请记住,每次操作(由您的Glassware完成或由您在Glass上完成)都会生成一张卡片(因此也就是ID)。因此,您的语音操作会生成一张存储在时间线上的卡片。编辑此卡(以更好地格式化它)或从Glassware中删除该卡是常见的,作为指示您已收到并已对其执行操作的一部分。
所以正在发生的事情是你正在从Glassware创建一张卡片(insertedItem
),你正在发出一个语音命令(notification
,然后你将其读入noteItem
)生成另一张卡,然后更新第二张卡。听起来你真的想要更新第一张卡,所以你应该更新insertedItem
。