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 上绘制,或响应外部
事件(例如传感器或位置更新)。使用 surfaceCreated
和
surfaceDestroyed
方法,用于在卡片
是显示还是隐藏
请注意,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 | |||||||||||
SurfaceHolder | |||||||||||
布尔值 | |||||||||||
无效 |
navigate()
|
||||||||||
无效 | |||||||||||
LiveCard |
setAction(PendingIntent intent)
|
||||||||||
LiveCard |
setDirectRenderingEnabledsetDirectRenderingEnabled(布尔值启用)
|
||||||||||
LiveCard |
setRenderer(GlRenderer 渲染程序)GlRenderer
|
||||||||||
LiveCard |
setViews(RemoteViews 视图)
|
||||||||||
LiveCard |
setVoiceActionEnabled(布尔值启用)
|
||||||||||
无效 |
继承的方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
常量
公共构造函数
公共方法
<ph type="x-smartling-placeholder"></ph> 公开 SurfaceHolder getSurfaceHolder ()
启用直接渲染后,可提供对要在其中进行绘制的 Surface
的访问权限。
请注意,返回的 SurfaceHolder
应仅用作访问
托管式平台改变表面形状和类型的方法是空操作。
另请注意,此对象的回调不是在界面线程中进行。
<ph type="x-smartling-placeholder"></ph> 公开 布尔值 isPublished ()
如果卡片当前已发布,则返回 true
。
<ph type="x-smartling-placeholder"></ph> 公开 无效 导航 ()
将用户引导至时间轴中的此卡片。
抛出
IllegalStateException | 如果卡片未发布 |
---|
<ph type="x-smartling-placeholder"></ph> 公开 无效 发布 (LiveCard.PublishMode 模式)
将此卡片发布到时间轴。
仅当卡片包含操作且已启用直接呈现或 远程视图。
参数
模式 | 决定如何向用户显示卡片 |
---|
<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setAction (PendingIntent intent)
更改选择卡片时执行的操作。
参数
意图 | 在选择卡片时触发 |
---|
返回
- 此对象(用于调用链)
<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setDirectRenderingEnabled (布尔值启用)
参数
启用 | 是否应启用直接呈现 |
---|
返回
- 此对象(用于调用链)
另请参阅
<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setRenderer (GlRenderer 渲染程序)
添加基于 OpenGL 的渲染程序。
渲染程序将用于在请求(自动)直接绘制的 Surface 上绘制 呈现。
返回
- 此对象(用于调用链)
<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setViews (RemoteViews 视图)
更改用于显示此卡片界面的 RemoteViews
。
在直接对 发布的卡片,否则这些更改不会反映在时间轴上。
如果已启用直接呈现,此方法不会产生任何影响。
参数
次观看 | 卡片界面 |
---|
返回
- 此对象(用于调用链)
<ph type="x-smartling-placeholder"></ph> 公开 LiveCard setVoiceActionEnabled (布尔值启用)
当卡片显示在时间轴上时启用语音操作。
设置后,卡片会听取“ok glass”在时间轴上显示时
当说出这个守卫短语时,就会触发由
setAction(PendingIntent)
方法结合使用。如果 intent 启动一个
实现上下文语音菜单的 activity,则该 activity 会自动
打开第一个菜单项(如同在活动中说出“Ok glass”)
本身)。借助此功能,您可以在实时卡片上实现上下文语音菜单。
参数
启用 | 是否应启用语音操作 |
---|
返回
- 此对象(用于调用链)
<ph type="x-smartling-placeholder"></ph> 公开 无效 取消发布 ()
从时间轴中取消发布此卡片。