происходит обновление временной шкалы стекла, но видны как старая, так и обновленная карты

После обновления карты временной шкалы с помощью 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», но с другой отметкой времени. Я ожидал увидеть только обновленную карту временной шкалы.


person Dev Srivastava    schedule 12.09.2013    source источник
comment
Можете ли вы показать пример кода того, как вы делаете обновление? Как правило, старая карта полностью заменяется обновленной картой. Наличие обоих означает, что вы получили два идентификатора.   -  person Prisoner    schedule 12.09.2013
comment
Существует два класса Java: NewUserBootstrapper и NotifyServlet. NewUserBootstrapper заботится о начальной загрузке, которая включает аутентификацию, вставку контакта и вставку подписки. Это код для вставки элемента временной шкалы в рамках начальной загрузки. // Отправляем приветственный элемент временной шкалы TimelineItem timelineItem = new TimelineItem(); timelineItem.setText(Привет); timelineItem.setNotification (новый NotificationConfig (). setLevel (ПО УМОЛЧАНИЮ)); Вставленный элемент временной шкалы = MirrorClient.insertTimelineItem (учетные данные, элемент временной шкалы);   -  person Dev Srivastava    schedule 16.09.2013
comment
Теперь в NotifyServlet, после того как Служба уведомлена об изменениях на временной шкале как часть голосовой команды принять к сведению, NotifyServlet пытается обновить текст того же элемента временной шкалы: - if (notification.getCollection().equals(timeline) ) { // Получить затронутый элемент временной шкалы TimelineItem timelineItem = mirrorClient.timeline().get(notification.getItemId()).execute(); //Обратите внимание, если (notification.getUserActions().contains(new UserAction().setType(LAUNCH))) {   -  person Dev Srivastava    schedule 16.09.2013
comment
final TimelineItem noteItem = mirrorClient.timeline() .get(notification.getItemId()).execute(); final String SpeakingText = noteItem.getText(); if ( SpeakingText.toUpperCase().contains(DONE) || SpeakingText.toUpperCase().contains(LIST)) { noteItem.setText(Hello Glassware); Зеркальный клиент. getMirror(credential).timeline().update(notification.getItemId(), noteItem).execute(); } } }   -  person Dev Srivastava    schedule 16.09.2013
comment
Пожалуйста, обновите свой исходный пост (вы должны иметь возможность щелкнуть ссылку редактирования под своим вопросом) - его очень сложно прочитать через комментарии. Спасибо!   -  person Prisoner    schedule 17.09.2013
comment
я думаю, что есть ограничение на длину комментариев, и поэтому мне пришлось разбить исходный пост на три.   -  person Dev Srivastava    schedule 17.09.2013
comment
Вы можете изменить свой исходный вопрос. Это лучший способ опубликовать код, чем пытаться поместить его в комментарии.   -  person Prisoner    schedule 17.09.2013
comment
Спасибо! отредактировал исходный пост с дополнительным объяснением и кодом.   -  person Dev Srivastava    schedule 17.09.2013


Ответы (1)


Я думаю, проблема в том, что вы пытаетесь обновить не ту карту. Хотя вы сохраняете исходную карточку как insertedItem, вы затем публикуете обновление, используя идентификатор notification.

Помните, что каждое действие, выполненное вашим Glassware или вами на Glass, создает карту (и, следовательно, идентификатор). Таким образом, ваше голосовое действие сгенерировало карточку, которая хранится на вашей временной шкале. Обычно эту карточку либо редактируют (для более удобного форматирования), либо удаляют карточку из Glassware как часть указания на то, что вы ее получили и отреагировали на нее.

Итак, вы создаете одну карту (insertedItem) из своего Glassware, отдаете голосовую команду (notification, которую затем считываете в noteItem), которая создает другую карту, а затем обновляете вторую карту. Похоже, вы действительно хотите обновить первую карту, поэтому вам следует обновить insertedItem.

person Prisoner    schedule 18.09.2013
comment
Я думаю, ваш i/ps имеет смысл. Я попробую это и дам вам знать. - person Dev Srivastava; 18.09.2013
comment
Мне придется подождать до начала следующей недели, чтобы попробовать обновление элементов временной шкалы. - person Dev Srivastava; 25.09.2013