LiveCard
Этот класс позволяет создавать активные карточки и публиковать их на временной шкале.
Дополнительные сведения о создании живых карточек см. в руководстве разработчика живых карточек .
Жизнь живой карты
Живым картам требуется длительный контекст, чтобы владеть ими в течение всего времени их публикации, поэтому управлять ими следует в фоновом режиме Service
. Затем вы можете опубликовать живую карточку сразу после запуска службы или в ответ на другие события, отслеживаемые службой. Аналогично, вам следует отменить публикацию карточек, как только они перестанут быть актуальными или когда служба будет уничтожена.
Публикуя живую карточку, вы можете выбрать, как это повлияет на пользователей. При публикации в автоматическом режиме карточка будет вставлена в шкалу времени без какого-либо видимого эффекта: пользователям придется провести по карточке, чтобы увидеть ее. Вы также можете автоматически отображать живую карточку сразу после ее публикации. Это часто бывает полезно, когда основной пользовательский интерфейс вашего приложения представляет собой живую карточку, а не действие.
Отображение контента на живой карточке
Живая карточка может отображать содержимое либо из ресурса макета, либо путем рендеринга вашего кода непосредственно на ее поверхности рисования. Выберите метод, наиболее подходящий для вашего приложения, в зависимости от того, как часто вам нужно обновлять содержимое карты и отрисовываете ли вы в первую очередь виджеты или графику произвольной формы.
Раздувание макета с помощью удаленных представлений
Если вашему приложению требуются только стандартные виджеты и нечастые обновления (около нескольких секунд или дольше между обновлениями), создайте свою карточку с помощью класса RemoteViews
. Объект RemoteViews
позволяет временной шкале Glass, которая выполняется в отдельном от кода вашего приложения процессе, раздувать созданный вами макет.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
Обратите внимание, что после публикации карты, использующей RemoteViews
, изменения, внесенные в представления путем вызова методов set*
не будут видны на временной шкале, если вы снова явно не вызовете setViews
на активной карте, чтобы принудительно выполнить обновление.
Рисование прямо на поверхности живой карты
Если вашему приложению требуются более частые обновления (несколько раз в секунду) или отрисовка более сложной графики, чем поддерживают стандартные виджеты, включите прямой рендеринг и добавьте SurfaceHolder.Callback
на поверхность карты.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
Затем вы можете рисовать прямо на поверхности внутри фонового потока или в ответ на внешние события (например, обновления датчиков или местоположения). Используйте методы surfaceCreated
и surfaceDestroyed
, чтобы запускать и останавливать логику рендеринга, когда карточка отображается или скрывается.
Обратите внимание, что методы обратного вызова держателя поверхности не вызываются в основном потоке пользовательского интерфейса.
Обработка выбора живой карты
Живая карточка должна предоставлять действие ( PendingIntent
для запуска действия, службы или выполнения трансляции), которое будет выполняться, когда пользователь нажимает, чтобы выбрать карточку. Обычно вы будете использовать это действие для запуска действия, которое отображает меню параметров или переводит пользователя в другую часть вашего приложения. По крайней мере, вы должны предоставить опцию, которая позволит пользователю удалить живую карточку с временной шкалы.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
Живые карточки, не имеющие действия, отображаться не будут.
Вложенные классы | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
перечисление | LiveCard.PublishMode | Определяет способ представления карты пользователю при публикации. |
Константы | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Нить | EXTRA_FROM_LIVECARD_VOICE | Дополнительное логическое значение, обозначающее, что Intent было активировано голосом живой карты. |
Публичные конструкторы | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Публичные методы | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | прикрепить ( Сервисная служба) | ||||||||||
ПоверхностьДержатель | |||||||||||
логическое значение | опубликовано () | ||||||||||
пустота | перемещаться () | ||||||||||
пустота | опубликовать (режим LiveCard.PublishMode ) | ||||||||||
LiveCard | setAction (намерение PendingIntent ) | ||||||||||
LiveCard | setDirectRenderingEnabled (логическое включение) | ||||||||||
LiveCard | setRenderer (рендерер GlRenderer ) | ||||||||||
LiveCard | setViews (представления RemoteViews ) | ||||||||||
LiveCard | setVoiceActionEnabled (логическое включение) | ||||||||||
пустота |
Унаследованные методы | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Константы
Публичные конструкторы
public LiveCard ( контекст контекста, строковый тег)
Создает живую карточку с заданным тегом.
Обратите внимание, что карточка не отображается, пока она не будет явно опубликована.
Параметры
контекст | контекст приложения |
---|---|
ярлык | ненулевой тег для карты; это для целей отладки |
Публичные методы
публичное подключение LiveCard ( сервисная услуга)
Прикрепите фоновую Service
, чтобы при публикации этой карточки данная служба была настроена на работу на переднем плане.
Служба будет автоматически удалена с переднего плана, если эта активная карточка не будет опубликована.
Параметры
услуга | будет настроен на работу на переднем плане |
---|
Возврат
- этот объект для цепочки вызовов
общедоступный SurfaceHolder getSurfaceHolder ()
Если включен прямой рендеринг, предоставляется доступ к Surface
, на которой можно рисовать.
Обратите внимание, что возвращаемый SurfaceHolder
следует использовать просто как средство доступа к управляемой поверхности. Методы изменения формы и типа поверхности являются ненужными.
Также обратите внимание, что обратные вызовы для этого объекта не выполняются в потоке пользовательского интерфейса.
См. также
общедоступное логическое значение isPublished ()
Возвращает true
, если карта в настоящий момент опубликована.
общественная пустота навигации ()
Отправляет пользователя к этой карточке на временной шкале.
Броски
IllegalStateException | если карта не опубликована |
---|
публичная недействительная публикация (режим LiveCard.PublishMode )
Публикует эту карточку на временной шкале.
Карточка будет отображаться только в том случае, если в ней есть действие, а также если включен прямой рендеринг или настроены удаленные представления.
Параметры
режим | определяет, как карта представляется пользователю |
---|
public LiveCard setAction (намерение PendingIntent )
Изменяет действие, выполняемое при выборе карты.
Параметры
намерение | будет уволен, когда карта будет выбрана |
---|
Возврат
- этот объект для цепочки вызовов
public LiveCard setDirectRenderingEnabled (логическое включение)
Включает прямой рендеринг.
В этом режиме содержимое карты необходимо будет визуализировать непосредственно на Surface
.
Обратите внимание, что этот метод можно вызвать только в том случае, если карточка не опубликована, иначе будет выдано исключение.
Параметры
давать возможность | нужно ли включать прямой рендеринг |
---|
Возврат
- этот объект для цепочки вызовов
См. также
общедоступный LiveCard setRenderer (рендерер GlRenderer )
Добавляет средство рендеринга на основе OpenGL.
Средство рендеринга будет использоваться для рисования на поверхности, запрошенной (автоматически) для прямого рендеринга.
Возврат
- этот объект для цепочки вызовов
public LiveCard setViews (представления RemoteViews )
Изменяет RemoteViews
используемые для отображения пользовательского интерфейса этой карты.
Этот метод также следует вызывать после внесения каких-либо изменений непосредственно в удаленные представления опубликованной карточки, иначе эти изменения не будут отражены на временной шкале.
Этот метод не имеет эффекта, если включен прямой рендеринг.
Параметры
просмотры | интерфейс карты |
---|
Возврат
- этот объект для цепочки вызовов
См. также
public LiveCard setVoiceActionEnabled (логическое включение)
Включает голосовое действие, когда карточка отображается на временной шкале.
Если этот параметр установлен, карта прослушивает команду «ОК, стакан», когда она отображается на временной шкале, и при произнесении этой защитной фразы активирует намерение, установленное методом setAction(PendingIntent)
. Если намерение запускает действие, которое реализует контекстные голосовые меню, действие автоматически откроется в первых пунктах меню (то есть, как если бы внутри самого действия было произнесено «ОК, стекло»). Эта функция позволяет реализовать контекстные голосовые меню на живых картах.
Параметры
давать возможность | нужно ли включать голосовое действие |
---|
Возврат
- этот объект для цепочки вызовов
См. также
public void отменить публикацию ()
Отменяет публикацию этой карточки на временной шкале.