LiveCard

在 API 级别 XE12 中引入
公共类

LiveCard

通过此类,您可以创建有效的卡片并将其发布到时间轴上。

如需详细了解如何创建实时卡片,请参阅 实时卡片开发者指南。

有效卡片的生命周期

实时卡片需要一个长期运行的上下文,才能在其存在的整个期间拥有它们 因此您应该在后台Service管理它们。然后,您可以 在服务启动后立即发布有效的卡片,或为响应 服务监控工具同样,如果卡片不再相关,或者 服务将被销毁

发布已发布的卡片时,您可以选择这对用户有何影响。静默发布时, 卡片将会插入时间轴,而不会产生任何可见效果:用户必须滑动 查看卡片。您还可以让已发布的卡片立即自动显示 发布。当应用的主界面是实时卡片时,这通常很有用 而非 activity。

在实际卡片上显示内容

实时卡片可以显示来自布局资源的内容,也可以通过允许代码渲染来显示内容 直接放在其绘图表面上。根据您的应用 您需要更新卡片内容的频率以及您主要是呈现 微件或自由格式的图形

使用远程视图膨胀布局

如果您的应用只需要标准微件,且更新频率较低(大约几秒或 刷新卡片,然后借助 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);
 

然后,您可以直接在后台线程内的 Surface 上绘制,或响应外部 事件(例如传感器或位置更新)。使用 surfaceCreatedsurfaceDestroyed 方法,用于在卡片 是显示还是隐藏

请注意,Surface 容器的回调方法不会在主界面线程上调用。

处理实时卡选择

有效卡片必须提供一项 action(即启动 activity 的 PendingIntent; 服务或执行广播)。 通常,您将使用此操作启动一个显示选项菜单的 Activity,或将 将用户深入到应用的其他部分您至少应该提供一个 让用户从时间轴中移除当前使用的卡片

     LiveCard liveCard; // initialized elsewhere
     Intent intent = new Intent(context, MyActivity.class);
     liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
 

不会显示没有操作的有效卡片。

嵌套类
枚举 LiveCard.PublishMode 确定卡片发布后向用户显示的方式。
常量
String EXTRA_FROM_LIVECARD_VOICE 布尔值 extra,表示由语音从实时卡中激活了 Intent
公共构造函数
LiveCard上下文上下文,String 标记)
公共方法
LiveCard
attach服务服务)
SurfaceHolder
布尔值
无效
无效
LiveCard
LiveCard
setDirectRenderingEnabledsetDirectRenderingEnabled(布尔值启用)
LiveCard
setRenderer(GlRenderer 渲染程序)GlRenderer
LiveCard
LiveCard
setVoiceActionEnabled(布尔值启用)
无效
继承的方法

常量

在 API 级别 XE21 中添加

<ph type="x-smartling-placeholder"></ph> 公开 静态 最后一站 字符串 EXTRA_FROM_LIVECARD_VOICE

布尔值 extra,表示由语音从实时卡中激活了 Intent

常量值: <ph type="x-smartling-placeholder"></ph> &quot;android.intent.extra.EXTRA_FROM_LIVECARD&quot;

公共构造函数

在 API 级别 XE16 中引入

<ph type="x-smartling-placeholder"></ph> 公开 LiveCard Context 上下文,String 标记)

创建具有指定标记的有效卡片。

请注意,只有在明确发布卡片后,卡片才会显示。

参数
上下文 应用的上下文
标记 卡片的非 null 标记;用于调试目的

公共方法

在 API 级别 XE16 中引入

<ph type="x-smartling-placeholder"></ph> 公开 LiveCard 附加 Service 服务)

附加一个背景 Service,以便 发布后,指定服务将设置为在前台运行。

执行此操作后,该服务会自动从前台移除 当前卡片已取消发布。

参数
服务 将被设置为
返回
  • 此对象(用于调用链)
在 API 级别 XE12 中引入

<ph type="x-smartling-placeholder"></ph> 公开 SurfaceHolder getSurfaceHolder ()

启用直接渲染后,可提供对要在其中进行绘制的 Surface 的访问权限。

请注意,返回的 SurfaceHolder 应仅用作访问 托管式平台改变表面形状和类型的方法是空操作。

另请注意,此对象的回调不是在界面线程中进行。

在 API 级别 XE12 中引入

<ph type="x-smartling-placeholder"></ph> 公开 布尔值 isPublished ()

如果卡片当前已发布,则返回 true

在 API 级别 XE16 中引入

<ph type="x-smartling-placeholder"></ph> 公开 无效 导航 ()

将用户引导至时间轴中的此卡片。

抛出
IllegalStateException 如果卡片未发布
在 API 级别 XE12 中引入

<ph type="x-smartling-placeholder"></ph> 公开 无效 发布 LiveCard.PublishMode 模式)

将此卡片发布到时间轴。

仅当卡片包含操作且已启用直接呈现或 远程视图。

参数
模式 决定如何向用户显示卡片
在 API 级别 XE12 中引入

<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setAction (PendingIntent intent)

更改选择卡片时执行的操作。

参数
意图 在选择卡片时触发
返回
  • 此对象(用于调用链)
在 API 级别 XE12 中引入

<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setDirectRenderingEnabled (布尔值启用)

支持直接呈现。

在此模式下,卡片内容必须直接渲染到 Surface 中。

请注意,此方法只能在卡片未发布时调用,否则 抛出异常。

参数
启用 是否应启用直接呈现
返回
  • 此对象(用于调用链)
另请参阅
在 API 级别 XE16 中引入

<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setRenderer GlRenderer 渲染程序)

添加基于 OpenGL 的渲染程序。

渲染程序将用于在请求(自动)直接绘制的 Surface 上绘制 呈现。

返回
  • 此对象(用于调用链)
在 API 级别 XE12 中引入

<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setViews RemoteViews 视图)

更改用于显示此卡片界面的 RemoteViews

在直接对 发布的卡片,否则这些更改不会反映在时间轴上。

如果已启用直接呈现,此方法不会产生任何影响。

参数
次观看 卡片界面
返回
  • 此对象(用于调用链)
在 API 级别 XE21 中添加

<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setVoiceActionEnabled (布尔值启用)

当卡片显示在时间轴上时启用语音操作。

设置后,卡片会听取“ok glass”在时间轴上显示时 当说出这个守卫短语时,就会触发由 setAction(PendingIntent) 方法结合使用。如果 intent 启动一个 实现上下文语音菜单的 activity,则该 activity 会自动 打开第一个菜单项(如同在活动中说出“Ok glass”) 本身)。借助此功能,您可以在实时卡片上实现上下文语音菜单。

参数
启用 是否应启用语音操作
返回
  • 此对象(用于调用链)
在 API 级别 XE12 中引入

<ph type="x-smartling-placeholder"></ph> 公开 无效 取消发布 ()

从时间轴中取消发布此卡片。