Google Glass GDK: обновление LiveCards (RemoteViews)

Возникла проблема с обновлением LiveCard с помощью удаленных представлений. Я публикую, используя этот код. Я предполагаю, что вы можете получить LiveCard, используя TimelineManager.getLiveCard(id), а затем снова опубликовать. В результате я получаю две LiveCards. Я использую один и тот же идентификатор каждый раз, когда публикую карточки.
В качестве обходного пути я сначала отменяю публикацию, а затем публикую, но это не плавный переход, поскольку между ними отображается «Окей-стекло».

private void publishCard(Context context) {
    String cardId = "myCard";
    mLiveCard = tm.getLiveCard(cardId);
    mLiveCard.setNonSilent(true);
    RemoteViews rv = new RemoteViews(context.getPackageName(),
            R.layout.activity_vitals_glass);
    rv = updateViews(rv, pr);
    mLiveCard.setViews(rv);
    Intent intent = new Intent(context, MenuActivity.class);
    mLiveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
    mLiveCard.publish();
}

Метод updateViews() просто устанавливает текстовые представления в удаленном представлении. Как правильно обновить LiveCard с помощью RemoteViews?


person Patrick    schedule 22.11.2013    source источник
comment
Как выглядит ваш файл activity_vitals_glass.xml?   -  person johnarleyburns    schedule 18.01.2014


Ответы (1)


getLiveCard создает новую живую карту, поэтому вам следует вызывать ее только один раз при запуске службы и кэшировать полученный экземпляр LiveCard.

Вы также можете кэшировать экземпляр RemoteViews одновременно. Чтобы обновить карту после ее публикации, вам просто нужно снова вручную вызвать setViews на LiveCard после вызова любого из установщиков RemoteViews.

person Tony Allevato    schedule 22.11.2013