0

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”文本,但时间戳不同。我期待只看到更新的时间线卡。

4

1 回答 1

0

我认为这里的问题是您正在尝试更新错误的卡。尽管您将原始卡存储为insertedItem,但您随后使用notification的 ID 发布更新。

请记住,无论是由您的 Glassware 执行还是由您在 Glass 上执行的每个操作都会生成一张卡片(从而生成一个 ID)。因此,您的语音操作生成了一张卡片,该卡片存储在您的时间线上。通常编辑这张卡片(以便更好地格式化它)或从玻璃器皿中删除卡片,以表明您已收到它并已对其采取行动。

所以发生的事情是,您正在insertedItem从您的 Glassware 创建一张卡片 ( ),您正在发出一个语音命令 ( notification,然后您读入noteItem) 生成另一张卡片,然后更新第二张卡片。听起来你真的想更新第一张卡,所以你应该更新insertedItem.

于 2013-09-18T11:11:15.010 回答