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
方法啟動及停止算繪邏輯。
請注意,主 UI 執行緒不會叫用表面持有人的回呼方法。
處理即時卡片選擇
即時資訊卡必須提供動作 (用於啟動活動、服務或執行廣播的 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 | |||||||||||
SurfaceHolder | |||||||||||
布林值 | |||||||||||
void | |||||||||||
void | |||||||||||
LiveCard |
setAction (PendingIntent 意圖)
|
||||||||||
LiveCard |
setDirectrenderEnabled (布林值啟用)
|
||||||||||
LiveCard |
setRenderer (GlRenderer 轉譯器)
|
||||||||||
LiveCard |
setViews(RemoteViews 檢視)
|
||||||||||
LiveCard |
setVoiceActionEnabled (布林值啟用)
|
||||||||||
void |
繼承方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
常數
公用建構函式
公用方法
公開 SurfaceHolder getSurfaceHolder ()
啟用直接轉譯時,請授予用於繪製繪圖的 Surface
。
請注意,傳回的 SurfaceHolder
應僅做為存取代管途徑的方式使用。變更表面形狀和類型的方法均不需要操作。
另請注意,此物件不會透過 UI 執行緒進行回呼。
公開 布林值 isPublish ()
如果卡片目前發布,則傳回 true
。
公開 void 發布 (LiveCard.PublishMode 模式)
將這張資訊卡發布至時間軸。
資訊卡必須含有動作,且已啟用直接轉譯功能或遠端檢視設定,才會顯示。
參數
模式 | 決定系統向使用者顯示卡片的方式 |
---|
public LiveCardsetAction(PendingIntent 意圖)
變更選取資訊卡時執行的動作。
參數
意圖 | 選取 [資訊卡] 後觸發 |
---|
傳回
- 這個物件用於呼叫鏈結
public LiveCardsetRenderer(GlRenderer 轉譯器)
新增 OpenGL 型轉譯器。
轉譯器會用於繪製 (自動) 到要求端進行直接轉譯的途徑。
傳回
- 這個物件用於呼叫鏈結
public LiveCard setViews (RemoteViews 次查看)
變更用於顯示這張資訊卡 UI 的 RemoteViews
。
對已發布的卡片進行遠端檢視之後,也應呼叫此方法,否則這些變更將不會反映在時間軸上。
如果啟用直接轉譯,這個方法就不會生效。
參數
次瀏覽 | 資訊卡的 UI |
---|
傳回
- 這個物件用於呼叫鏈結
public LiveCardsetVoiceActionEnabled(布林值啟用)
在時間軸上顯示資訊卡時,啟用語音操作。
設定完成後,卡片會在時間軸上顯示時聽「Ok Glass」,並在執行這個防護語句時觸發由 setAction(PendingIntent)
方法設定的意圖。如果意圖啟動的活動實作了內容語音選單,則該活動會自動在第一個選單項目中開啟 (就像在活動本身中說出「Ok Glass」一樣)。這項功能可以在即時資訊卡上實作關聯語音選單。
參數
啟用 | 是否應啟用語音操作 |
---|
傳回
- 這個物件用於呼叫鏈結
公開 void unpublish ()
從時間軸取消發布這張資訊卡。