LiveCard

已新增至 API 級別 XE12
公開課程

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 決定資訊卡發布時向使用者顯示的方式。
常數
String EXTRA_FROM_LIVECARD_VOICE 布林值額外項目,表示Intent是透過即時卡片透過語音啟動。
公用建構函式
LiveCard(內容背景資訊、字串標記)
公用方法
LiveCard
attach(服務服務)
SurfaceHolder
布林值
void
void
LiveCard
LiveCard
LiveCard
setRenderer(GlRenderer 轉譯器)
LiveCard
setViews(RemoteViews 檢視畫面)
LiveCard
setVoiceActionEnabled(布林啟用)
void
繼承的方法

常數

已新增至 API 級別 XE21

公開 靜態 最終 字串 EXTRA_FROM_LIVECARD_VOICE

布林值額外項目,表示Intent是透過即時卡片透過語音啟動。

常數值: "android.intent.extra.EXTRA_FROM_LIVECARD"

公用建構函式

已新增至 API 級別 XE16

公開 LiveCard (「情境」背景資訊、String 標記)

使用指定標記建立即時資訊卡。

請注意,資訊卡經過明確發布後才會顯示。

參數
情境 應用程式的結構定義
標記 非空值的標記;以便偵錯

公用方法

已新增至 API 級別 XE16

公開 LiveCard 附加 (服務服務)

附加背景 Service,以便在這張資訊卡送達時 發布後,指定服務會設為在前景執行。

此時服務會自動從前景移除 已取消發布即時資訊卡。

參數
服務 會以預先設定執行
傳回
  • 這個物件用於呼叫鏈結
已新增至 API 級別 XE12

公開 SurfaceHolder getSurfaceHolder ()

啟用直接轉譯後,使用者即可存取要繪製的 Surface

請注意,傳回的 SurfaceHolder 只能做為存取 管理介面改變表面形狀和類型的方法並非自動化。

另請注意,此物件的回呼並不是在 UI 執行緒中製作。

已新增至 API 級別 XE12

公開 布林值 isPublished ()

如果卡片目前已發布,則傳回 true

已新增至 API 級別 XE16

公開 void 導航 ()

在時間軸中將使用者導向這張資訊卡。

擲回
IllegalStateException 表示資訊卡尚未發布
已新增至 API 級別 XE12

公開 void 發布 (LiveCard.PublishMode 模式)

將這張資訊卡發布到時間軸。

資訊卡只會在有動作,且已啟用直接顯示功能的情況下才會顯示 設定遠端檢視。

參數
模式 決定資訊卡的呈現方式
已新增至 API 級別 XE12

公開 LiveCard setAction (PendingIntent 意圖)

選取資訊卡時執行的動作。

參數
意願 選取卡片後就會觸發
傳回
  • 這個物件用於呼叫鏈結
已新增至 API 級別 XE12

公開 LiveCard setDirectRenderingEnabled (啟用布林值)

啟用直接顯示功能。

在這個模式下,資訊卡內容必須直接算繪到 Surface 中。

請注意,只有在卡片未發布的情況下才能呼叫這個方法, 擲回例外狀況

參數
啟用 是否應該啟用直接顯示功能
傳回
  • 這個物件用於呼叫鏈結
另請參閱
已新增至 API 級別 XE16

公開 LiveCard setRenderer (GlRenderer 轉譯器)

新增以 OpenGL 為基礎的轉譯器。

轉譯器將用於繪製到要求 (自動) 的途徑上 算繪。

傳回
  • 這個物件用於呼叫鏈結
已新增至 API 級別 XE12

公開 LiveCard setViews (RemoteViews 檢視表)

變更用來顯示這張資訊卡 UI 的 RemoteViews

直接對 否則變更內容就不會反映在時間軸上。

如果啟用了直接顯示功能,這個方法就不會產生任何作用。

參數
次觀看 資訊卡的 UI
傳回
  • 這個物件用於呼叫鏈結
已新增至 API 級別 XE21

公開 LiveCard setVoiceActionEnabled (啟用布林值)

在時間軸顯示資訊卡時啟用語音操作。

設定後,卡片會監聽「ok Glass」這種文字呈現在時間軸上 當系統朗讀這段守衛詞組時,就會啟動由 setAction(PendingIntent) 方法。如果意圖啟動了 實作內容語音選單的活動,活動就會自動 在第一個選單項目中開啟 (viz,就像活動內部朗讀「ok Glass」時) 其本身)。這項功能可讓您在即時資訊卡上導入內容語音選單。

參數
啟用 是否應啟用語音指令
傳回
  • 這個物件用於呼叫鏈結
已新增至 API 級別 XE12

公開 void 取消發布 ()

從時間軸取消發布這張資訊卡。