應用程式基礎

Googlebook 首波主打:Notability 和 Logitech

喇叭

  • Emilie Roberts

    開發人員關係工程師

  • Ryan Shea

    Android 負責人

  • Joe Yezhou Wang

    Logitech 工程部門經理

關於

講座簡介

Googlebook 的推出,為高擬真度的桌機級體驗開闢了新境界。在這場講座中,我們將深入瞭解兩位先驅合作夥伴,他們從零開始為這個平台打造產品。

Notability 將分享他們使用 Jetpack Compose 打造電腦級 Android 應用程式的歷程。瞭解他們如何從其他應用程式平台轉移,並以電腦為優先考量。接著,Logitech 將深入探討硬體層面,說明如何建構及自訂周邊裝置,與 Googlebook 完美整合。歡迎參加這場講座,瞭解如何最佳化輸入內容、運用大螢幕 API,以及在軟硬體上提供優質一致的使用者體驗。

摘要

  • Jetpack Compose 和 Navigation 3 可讓您根據可用視窗大小 (而非裝置板型規格),輕鬆調整各裝置的版面配置。
  • 如要提供電腦級體驗,就必須支援鍵盤和觸控板等多種輸入模式。Android 17 的「繼續使用」等功能,也讓使用者能在裝置間接續工作。
  • Jetpack Ink 為開發人員提供低延遲的繪圖管道,不必管理自訂顯示執行緒或複雜的圖層交接。
  • 開發人員可透過 Peripheral Customization API (需加入許可清單),使用廠商和產品 ID 將周邊硬體觸發條件對應至 OS 動作。

Gemini Notebook

主題

  • googlebook
  • jetpack-compose
  • jetpack-ink
  • navigation-3
  • 大螢幕
  • peripheral-customization
  • kotlin-multiplatform

轉錄稿

Googlebook 建構作業簡介

  • 大家好,我是 Emilie Roberts,擔任開發人員服務代表,在筆電上開發 Android 應用程式已有約九年時間。

  • Googlebook 隨之問世。

  • 太好了!

  • 我非常期待,因為我們為筆電領域帶來了很棒的創新。

  • 很高興能與兩位開發人員同台,他們投入大量心力,讓應用程式在 Googlebook 上呈現絕佳效果。

  • 您好

  • 我是 Notability 的 Ryan。

  • 我是 Android 經理,這款數位筆記本應用程式是我們剛在 Android 推出的產品。

  • 這項功能也適用於 iOS、電腦,以及 Google 圖書。

  • 你好:

  • 我是 Logitech 的 Joe,我們以優質硬體和周邊裝置聞名。

  • 並說明我們如何將這些功能導入新平台。

設計大螢幕適用的 Android 應用程式

  • 我要把他們推倒。

  • Google 圖書應運而生。

  • 太好了!

  • 太好了!

  • 太好了!

  • 希望大家有機會親自試用,或前往樓上/樓下的展示攤位體驗。

  • 當然,也別忘了檢查應用程式在這些裝置上的顯示效果。

  • 我會照慣例說明 Android 生態系統正在成長。

  • 我九年來一直這麼說,現在依然如此。

  • 應用程式也需要與時俱進,確保能滿足使用者在所有螢幕尺寸和裝置上的需求。

  • 目前,採用效能良好且運作正常的應用程式版面配置已是標準做法。

  • 而 Jetpack Compose 和 Navigation 3 是最佳選擇。

  • 輸入內容也一樣。

  • 應該就能正常運作。

  • 當然,應用程式的架構和狀態管理也都是版面配置和輸入內容的一部分。

  • 我們在 ADS 舉辦了多場講座,介紹如何運用最新工具和最佳做法達成這個目標。

  • 不過,今天我們想藉此機會,為從一開始就為 Googlebook 開發產品的開發人員提供一點空間,聽聽他們的故事。

  • Notability 是專為 Googlebook 打造的強大記事應用程式。

  • Logitech 不僅確保鍵盤、滑鼠和其他周邊裝置能正常運作,還確保這些裝置在 Googlebook 上能發揮最佳效能,包括使用者自訂功能。

  • 抱歉搶了你的風采,Joe,但我們會深入探討細節。

  • 這對我來說已經足夠了。

  • 抱歉,這次沒有饒舌。

  • 也絕對不要再即興發揮了。

  • 總之,我們很高興能在 Googlebooks 上推出 Notability,現在我要把簡報筆交給 Ryan。

  • 謝謝。

Notability 登陸 Android

  • 太棒了!

  • 非常感謝,Em。

  • 我們很高興能加入 Googlebooks。

  • Notability 是數百萬名學生學習和專業人士做筆記的地方。

  • 如前所述,這項功能現已在 Android 上推出。我會快速說明我們如何建構這項功能,以及如何正確建構 Android 應用程式,以便在 Googlebooks 上達到最佳效果。

  • 首先,我們大約在兩年前開始這個專案時,就希望確保我們不只是移植 iOS 應用程式,然後直接提供給使用者,並認為這樣就足夠了。

  • 我們希望打造出真正符合使用者期望的原生體驗,同時提供完整的功能。

  • 為此,我們使用 Material Design 和元件,從頭開始自訂所有畫面。

  • 此外,我們也確保能充分運用 Jetpack Compose。

  • 由於這是一款完全採用 Jetpack Compose 的原生 Android 應用程式,因此我們能支援各種硬體,不只是小型手機和低階裝置,還包括高階、功能強大的大螢幕平板電腦、電腦、XR、車輛等,以及介於兩者之間的所有裝置。

  • Jetpack Compose 可讓您輕鬆支援這些原生功能,不必在 UI 介面中建構大量額外功能。

  • 接下來,我們來看看 Notability。

  • Notability 的所有內容都是以 Jetpack Compose 建構而成。

  • 整個平台的使用者介面都一致,基本上只要建構一次,手機上顯示的內容與最終在平板電腦和 Googlebook 等大型裝置上顯示的內容之間,不會有任何實際變更。

  • 為此,Navigation 3 是我們的一大突破。

  • Navigation 3 在 Google 內建 Notability 中的運作方式是,根據螢幕大小,我們實際上可以自訂版面配置,而不必擔心該功能會如何呈現。

  • 在這個示範中,你可以看到,如果某個項目有空間可以開啟側邊面板,就會開啟。

  • 如果沒有,則會以底部功能表的形式彈出。

  • 那麼,程式碼會是什麼樣子?

  • 在畫面上顯示的程式碼中,您可以看到側邊實際摘要面板有一個進入點,我們將其新增至返回堆疊。

  • 接著,自訂場景策略會根據是否有空間,為側邊面板選擇版面配置。

  • 因此,在平板電腦或 Googlebook 裝置上,系統會尋找可用空間,並騰出空間,然後從右側滑入面板。

  • 不過,在手機或折疊式裝置等裝置上,可能沒有足夠空間正確顯示該面板,因此會改為彈出底部功能表。

  • Notability 會根據視窗大小調整,而不是根據裝置類型 (手機、Googlebook、平板電腦、摺疊式裝置等),因此我們的 UI 可以輕鬆自動調整,滿足使用者需求。

  • 在手機上,所有按鈕和工具都會重新排列,方便使用者用拇指操作。

  • 在平板電腦上,導覽面板會顯示在所有主要內容旁邊,因為平板電腦有更多空間,螢幕也更容易互動。

  • 在摺疊式裝置上,我們利用摺疊功能提供獨特的版面配置和 UI,例如學習測驗,使用者可以在下半部回答問題,並在上半部查看實際測驗進度。

  • 最後,在 Google 圖書中,我們實際上可以順暢地調整視窗大小。

  • 因此,就像在電腦上使用其他一般視窗應用程式一樣,Notability 會根據你調整視窗大小的方式,配合你的並排需求。

  • 如前所述,我們在建構 Google 圖書時,採用了自動調整式 UI,幾乎能提供完整的電腦版體驗。

  • 這項功能可以讓你非常接近目標。

  • 不過,如果你想獲得媲美桌機的體驗,享受真正與眾不同的效果,建議你採取以下幾項做法。

  • 首先,以鍵盤操作為優先。

  • 使用者不會像在一般平板電腦或手機裝置上那樣,對觸控操作那麼敏感,因此提供鍵盤快速鍵和輕鬆存取 Android 快速鍵清單的方法非常重要。

  • 接下來,您有時可以設計功能,根據裝置類型和可用的輸入周邊裝置,採用不同的版面配置。

  • 如果偵測到筆電、外接鍵盤或滑鼠,主畫面會顯示略有不同的使用者介面,將使用者重新導向至我們認為他們會偏好的工具,而不是平板電腦等裝置,因為這類裝置的主要選項是觸控筆和自動手寫筆記。

  • 另一件需要思考的事,是多個不同裝置如何互動。

  • Android 17 的新功能「接續使用」可讓您在不同裝置間順暢切換應用程式。

  • 舉例來說,在這個範例中,我們將記事從手機轉移到較大的電腦裝置。

  • 只要快速同步處理附註 ID,並快速查看進度,即可輕鬆完成。

  • 因此,我們只要向 Googlebook 裝置傳送快速應用程式意圖,就能輕鬆接續上次中斷的地方。

  • 針對電腦級裝置,另一項要考量的是多輸入支援模型。

  • 因此,除了前面提到的鍵盤快速鍵等功能外,觸控板也會提供與以往不同的縮放和捲動行為。

  • 此外,您可能需要為使用者提供先前沒有的右鍵選單。

  • 此外,由於許多 Googlebook 裝置仍是觸控螢幕裝置,因此當使用者與裝置互動時,您必須確保系統能辨識不同的輸入方式,不只是觸控筆和手指,還有觸控板游標,因為這三種方式都應以不同方式處理。

使用 Jetpack Ink 進行低延遲繪圖

  • 如果您對筆跡和筆記功能感興趣,例如 Notability,建議使用 Jetpack Ink。

  • 因此,我們使用這個系統為筆跡提供低延遲建構系統,而不必管理龐大、複雜的執行緒、轉譯和緩衝區讀取器,以及其他我稍後會介紹的內容。

  • 但如果現在能用,我其實可以向大家現場示範 Notability 應用程式,這要感謝 Logitech。

  • 好,太棒了。

  • 所以,噢,拜託。

  • 好了,太棒了。

  • 這就是我剛才執行的測試。

  • 但如你所見,我用的是手指,所以這裡仍會辨識手指輸入,這點很棒。

  • 我也可以視需要使用滑鼠。

  • 不過,我們目前已能打造一些 Android 專屬的自訂筆刷。

  • 如你所見,我選取了彩虹和亮粉效果,因此輸入或筆跡效果會受到底層 Jetpack Ink 程式庫的影響。

  • 現在,我再寫一次訊息。

  • 大家好。

  • 最後,我們選擇 Android 綠色。

  • 很難正確觸控。

  • Android 綠色。

  • 接著,我們可以看到實際顏色會根據您在這裡做為基本模型的顏色而變更。

  • 太好了。

  • 過去,我們可能需要花上幾個月的時間,才能完成所有自訂著色器和介面,並確保一切正確無誤且美觀。

  • 幸好,現在有了 Jetpack Ink,只要運用 AI 和自訂筆刷建構工具,不到一週就能完成。

  • 所以如果你想刺青,可以找他們。

  • 這項 API 非常實用,為我們省下許多時間。

  • 太棒了!

  • 如先前所述,這就是大致的樣子。

  • 因此,我們有所謂的濕墨層。

  • 這是我們正在繪製的墨水,還在繪製中,需要非常非常靈敏,你知道,相對於乾墨水層。

  • 從實體角度來看,這很合理,你可以這樣想。

  • 那是儲存的墨水,已經完成了。

  • 因此,交接工作過去完全由我們負責。

  • 因此,我們必須進行執行緒、重新繪製和清理,並將其交給乾層,確保這些同步且不會閃爍,而且存在所有這些複雜性。

  • 最後,我們必須運用 Notability 的獨特之處,對吧?

  • 我們有自己的曲線擬合模型,可以讓你的手寫內容脫穎而出。

  • 這是舊模式。

  • 多虧 Jetpack Ink,我們只要將曲線擬合輸入自訂進度形狀檢視畫面,就能在 Android 上立即看到神奇的效果。

  • 在討論 Jetpack Ink 和其他 Google 程式庫時,我們也考慮到 KMP。

  • 所以我們一開始先查看已建構的 iOS 程式碼,然後心想:「好,我們想在 Android 和 iOS 之間共用一些邏輯。

  • 我們有模型、有變化,還有複雜的數學。

  • 分享是合理的做法。」

  • 我們當時想:「嘿,C++,你知道,Apple 的 Objective-C,我們就走這條路吧。」

  • 結果發現,Kotlin Multiplatform 不僅讓 iOS 工程師更容易實作,而且速度更快。

  • 因此,使用 Kotlin 不僅能提升效能,還能複製許多 Android 程式碼,長期來看,對 iOS 也更輕鬆。

  • 因此,如果您想共用程式碼,建議您研究 Kotlin Multiplatform。

  • 目前我們仍在評估中。

  • 雖然目前還沒有 100% 支援,但如您所知,不同的 AI 模型確實讓作弊變得更容易,只要將程式碼放在多個地方即可,但我們仍在積極調查,而且我對這項功能評價很高。

  • 好,現在來介紹 Notability 的獨家功能。

  • 如果您曾嘗試在 Android 上建構可用的文字編輯器,可能會注意到,目前其實沒有很好的方法可以建構大型、龐大的文件文字編輯器。

  • 基本的 Android 編輯輸入欄位都是小型 UI、小型 EditText 和短格式內容。

  • 我們最後必須建構這個非常複雜的系統,基本上是建構在現有的 Android API 之上,但能夠同時處理更大型的文件,例如數千頁的文字,而且可以共同編輯,因此您可以讓其他地方的使用者編輯距離您 500 頁的內容,這會導致變更,進而影響您的工作。

  • 我們發現,基本上按鍵輸入會經過兩條路徑。

  • 第一種方法是,我們盡力而為,這個鍵應該出現在這裡。

  • 根據目前所能判斷的一切,以及底層結構的狀況,我們認為這項功能很實用。

  • 然後我們快速同步一下,對吧?

  • 我們會到後端檢查合作夥伴,詢問他們:「一切都好嗎?

  • 這樣合理嗎?

  • 我們準備好了嗎?」

  • 如果情況有變,系統會重新調整。

  • 您可以想像,如果兩位使用者在同一行上輸入按鍵,那麼誰會得到什麼就會有點混亂。

  • 但大致上來說,這個方法的效果非常好。

  • 之所以在這裡提到這點,是因為我們投入了大量心力,並考慮將其開放原始碼。

  • 因此,如果與會者或日後在線上看到這場會議的人,認為這是個好主意,並想與我們合作,歡迎與我們聯絡。

  • 我們正在討論是否真的值得投入心力,但你知道,這對我們來說是一項重大任務,我們對結果感到非常自豪。

  • 好,接下來說明筆跡的運作方式。

  • 因此,在協作模式方面,這更像是我們這邊的直接運作方式。

  • 如您所見,這裡有三個步驟。

  • 首先是 Touchdown,我們會向任何連結的裝置 (在本例中為 iPad) 說:「順帶一提,我們正在啟動筆跡事件」。

  • 接著是實際繪圖,因此可能有一到數百萬個,具體取決於使用者在裝置上繪圖的時間長度。

  • 希望不會太久。

  • 雖然我認為這項功能有其限制,但對一般用途來說,效果相當不錯。

  • 接著是 lift-up 事件。

  • 因此,我們在模型中保留一個暫時物件,用來管理這項資訊。

  • 因此,在 iPad 上,我們會說:「好的,有筆劃即將出現,但還沒到。

  • 我們無法與其互動。

  • It's ephemeral."

  • 只有在完成事件啟動後,我們才會實際進入並說:「好的,太棒了。

  • 現在,請將整個內容替換為 iOS 或任何其他用戶端可以擷取並互動的單一物件。」

  • 我們也正在考慮將這項技術開源。

  • 這不是我們直接手寫的內容,而是一些暫時性的內容,尤其是在文字層中。

  • 太好了!

  • 然後,沒錯。

  • 我們也建議使用其他工具。

  • 裝置端 AI 非常實用。

  • 我們用它來掃描文件,因此您可以掃描文件、分析 PDF 文字,以及進行一些手寫辨識。

  • 我們也使用 Gemini 等開放式 Cloud AI 模型,生成智慧筆記,將使用者的筆記分類、摘要,並以更適合學習模型、更具互動性的方式回饋給使用者。

  • 這些功能結合在一起,讓 Notability 就像筆電應用程式一樣,對吧?

  • 這就是最終目標。

  • 我們有各種有趣的模型、不同的功能、文字、輸入內容,但重點是,這款應用程式用起來像筆電應用程式,還是像在大螢幕上開啟「電話」應用程式,然後隨便用用?

  • 鍵盤、觸控板、觸控筆、視窗大小調整,這些都是關鍵功能,必須正確運作,才能確保使用者獲得良好體驗。

  • 不過,正如我先前所說,Jetpack Compose、Navigation 3、Material Design 都涵蓋了這點。

  • 因此,只要做法正確,其實不會太費力。

  • 這裡很容易到達。

  • 所以,

  • 以上就是我們的重點摘要。

  • 展望 Android 的未來,我認為不應再侷限於裝置。

  • 我不會去想,這是手機、摺疊式裝置、XR 裝置、桌上型電腦或筆電、平板電腦、汽車或電視。

  • 而是要思考:我能使用多大的螢幕尺寸?使用者能使用哪些輸入模式?

  • 並為日後的使用者提供最佳體驗。

  • 就像我在上一張投影片提到的,Compose 和 Nav 3 讓支援這些功能變得非常簡單。

  • Google 每天都會推出全新且強大的 API,例如 Jetpack Ink 或 Gemini 裝置端等,讓您輕鬆打造核心體驗,並專注於打造獨特魅力。

  • 好的。

  • 所以…

  • 謝謝大家

  • 我的演講到此結束。

  • 如果各位有任何問題,我稍後可以回答,或者也可以直接與 Notability 聯絡。

  • 這款應用程式大約兩個月前才在 Android 推出。

  • 我們終於結束 Beta 版測試了。

  • 歡迎試用。

  • 提供意見。

  • 您也可以在身後的展示流程中,透過 Google 圖書取得這份資料。

  • 接下來,我將交由 Logitech 的 Joe 繼續說明。

  • 感謝您!

將 Logitech Options+ 導入 Googlebook

  • 現在我們來做個小測驗

  • 謝謝 Ryan。

  • 今天,好的,抱歉。

  • 好,我們來看看投影片。

  • 謝謝 Ryan。

  • 今天,我將分享我們如何將 Options+ (周邊裝置自訂應用程式) 導入 Googlebook。

  • 以及打造周邊體驗的意義。

  • 我會介紹我們開發的產品、背後的工程亮點,以及未來的發展方向。

  • Logitech 裝置過去就支援 Android,大多數使用者發現,這些周邊裝置能提升無障礙體驗,尤其是搭配高階筆電和外接螢幕的手機。

  • 說到這個,我剛才在樓下的 Googlebook 示範攤位,看到他們把 Logitech 遊戲序列式排檔桿固定在桌上,用來切換平板電腦上的不同畫面。

  • 就在這裡

  • 這是其中一種用法。

  • 對了,法拉利還得額外收取 5 萬歐元,才能提供序列式…算了。

  • 是啊

  • 正如 Ryan 詳盡說明,Googlebook 有更多空間可供運用。

  • 如你所見,你可以調整螢幕大小、橫向、直向或正方形,如果喜歡的話,你可以在應用程式之間有更多的空間。

  • 你可以繼續手邊的工作、使用不同應用程式,以及切換情境等。

  • 這確實改變了應用程式設計,版面配置也必須在整個程序中保持實用。

  • 對 Logitech 來說,這點特別有趣,因為我們在周邊設備方面擁有豐富經驗,對吧?

  • 我們為這項工作奠定了非常穩固的基礎。

  • 因此,我們認為在這種工作環境中,使用者一整天都會透過滑鼠或鍵盤與外掛程式互動。

  • 他們可以非常順暢地進入工作流程。

  • 我認為,說 Logitech 將數十年的經驗帶入這項工作,一點也不誇張。

  • 本月初剛好是我們成立 45 週年。

  • 我想,我們從 Logitech 成立第二年、第二天起,就一直在製造滑鼠。

  • 因此,我們非常有信心能進入這個領域。

  • 更棒的是,我們與 ChromeOS 合作已久。

  • 我們過去保證與 ChromeOS 具有頂級相容性。

  • 綜上所述,我們在打破硬體、軟體、平台、OS 和 Googlebooks 之間的界線方面,有非常豐富的實務經驗。

  • 舉例來說,使用者按下按鈕後,會看到可預測的結果。

  • 這就像是大家認為理所當然的事。

  • 但實際上需要無縫的元件相容性。

  • 此外,大家都希望裝置能與周邊設備相容。

  • 例如,將靈敏度調整到恰到好處。

  • 65 歲,不多也不少。

  • 因此,這三者之間必須完美整合,才能確保相容性。

  • 現在,隨著 Googlebooks 的推出,我們也推出了適用於 Googlebooks 的 Options+。

  • 目前我們支援多種滑鼠和鍵盤,未來還會支援更多。

  • 使用者也可以在這裡設定裝置。

  • 正如我之前提到的,比如感性,所有這類事情。

  • 現在,這裡的場景變得更有趣了。

  • 談到可設定性,我們實際上是在談論兩個方面。

  • 一端是硬體和韌體,功能在韌體中實作。

  • 另一端是 OS 端,也是這場示範和簡報的重點。

  • 我想大家都知道,過去 Android 裝置和大多數應用程式都位於自己的沙箱 (使用者空間) 中。

  • 在許多情況下,您能做、不能做和想做的事,都會受到某些限制。

  • 這對我們來說非常重要。

  • 現在,這是一張螢幕截圖,我們稍後會進行示範,但這裡有螢幕截圖。

  • 我們這裡有一隻滑鼠,MX Master 4,這裡有很多功能。

  • 如果你熟悉周邊裝置,就會發現某些功能其實是韌體功能、裝置功能。

  • 有些則不然。

  • 我們正在努力讓使用者能設定兩端。

  • 我們的工作基本上是讓使用者瞭解這些選項,並提供完整功能,以及正確設定 OS 和韌體。

  • 現在,我們來看看快速示範。

  • 這場示範令人印象深刻。

  • 但下次,Ryan,請使用滑鼠。

Options+ 現場示範

  • 好,我們開始吧。

  • 這是我的裝置螢幕。

  • 可以看到我已註冊 MX Master 4 滑鼠,就是這個。

  • 現在就開始吧。

  • 我們將直接前往設定畫面,如您先前所見,這裡就是魔法發生的地方。

  • 首先,我們將畫圈搜尋功能指派給拇指按鈕。

  • 接著,我們將魔術指標放入功能按鈕。

  • 現在,我們開始吧。

  • 開啟瀏覽器。

  • 前往。

  • 我按下剛才指派給「畫圈搜尋」的拇指按鈕。

  • 如你所見,我圈選了鍵盤。

  • 我變!

  • Google 只會顯示這個鍵盤的相關資訊。

  • 非常實用,而且很流暢。

  • 現在,我們來試試其他方法。

  • 抱歉。

  • 讓我倒轉。

  • 我們來試試魔術指標。

  • 我們來切換這個選項。

  • 我可以按下功能按鈕,標記這個裝置,然後按下「這是什麼裝置?」

  • 大功告成!

  • Google 開始搜尋並顯示結果。

  • 因此,這項功能的優點在於,您只需單手操作,就能整合整個工作流程。

  • 只要預先指派功能,然後按下、圈選、點選,就完成了。

  • 因此,我們相信這類作業將大幅提升使用者的無障礙體驗和工作方式。

  • 現在回到投影片。

周邊裝置自訂 API 總覽

  • 所以你可能會問,是什麼原因造成這種情況。

  • 因為過去有許多事情是應用程式無法做到的。

  • 這就是 Peripheral Customization API,可在 Googlebook 和 Android 裝置上使用。

  • 不過,以下是 Google 的附註。

  • 目前,這個 API 僅開放給許可清單中的使用者。

  • 但預計會與 Android 更新一起發布,直到 2026 年第 4 季 (即本季)。

  • 因此,一旦發布,我認為世界各地的開發人員都能使用。

  • 現在,我們來談談技術層面的問題。

  • 這項功能包含三個主要元件:裝置、觸發條件 (可以是按鍵或按鈕),以及動作 (在應用程式 OS 端)。

  • 現在,我們來快速查看這個程式碼片段。

  • 在最上方,我們使用供應商 ID 和產品 ID 定義裝置。

    // Vendor and product Information
    const val VENDOR_ID = 1234
    val pid = 123
    
    // Use the mouse Middle Button as the trigger
    val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)
    
    // Set Voice Assistant as the action
    val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
    actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
    val action = actionBuilder.build()
    
    val im = context.getSystemService(INPUT_SERVICE) as InputManager
    im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)
  • 我們通常稱之為 vid 和 pid。

  • 接著,我們開始定義觸發條件。

  • 如您所見,我們想使用中間的按鈕做為觸發條件。

  • 我們想將中間的按鈕對應到 OS 功能的語音助理部分。

  • 對吧?

  • 我們在 AppCustomizationAction 這裡和這裡都有 actionBuilder。

  • 接著往下看,我們在這裡註冊產品、裝置、觸發條件和動作之間的對應關係。

  • 當然,實際的程式碼會比這更複雜,但整體概念就是這樣。

  • 非常簡單易用。

  • 接下來介紹另一個非常酷炫有趣的功能。

  • 我在此處放了 GIF 檔案,方便大家查看。

  • 基本上,當有相容且支援的裝置 (例如 Logitech Mobifold 滑鼠) 時,OS 就會觸發標準通知,告訴你「嘿,你有一個應用程式可以搭配使用」。

  • 當然是通知使用者。

  • 點選後,系統會將你導向 Play 商店,你可以在該處直接安裝。

  • 這項功能稱為「快速配對探索」。

  • 最後,我們來看看 UI 部分。

  • Ryan 已經介紹過 Googlebook 的許多優點,以及如何設計使用者介面,因此我會快速帶過這部分。

  • 如你所見,Options+ 可以在不同平台上執行,包括 Windows、Mac 和現在的 Chromebook。

  • 因此,我們有兩個目標:第一,我們希望讓使用者感覺這是平台專屬的應用程式,但同時,我們也希望讓使用者感覺在不同平台上使用時,體驗是相似的,也就是說,一旦您熟悉了在一個平台上使用 Options+,您應該能夠在另一個平台上順暢地使用它。

  • 也就是說,我們希望善用特定平台,同時使用相同的設計語言。

  • 如你所見,整體設計語言一致。

  • 如前所述,Googlebook 使用者傾向以筆電/桌機的方式使用 Googlebook。

  • 因此,即使在 Googlebook 上,應用程式本身看起來也像電腦版應用程式。

  • 因此,應用程式本身的運作方式可能與電腦版應用程式類似,而且在各種視窗大小、不同觸控方式下都能正常運作,當然,您也可以控制使用滑鼠和鍵盤。

未來藍圖和結論

  • 以上就是 Logitech 周邊裝置和 Options+ 在 Googlebook 上的簡短故事。

  • 效果非常好。

  • 不過,這只是起頭而已。

  • 我們有幾個步驟:首先,我們希望將這項體驗帶到更多裝置、更多鍵盤、滑鼠和其他周邊裝置,並希望根據實際使用者意見回饋,改善這個應用程式。

  • 當然,最重要的是,我們未來會與 Google 進一步合作,並更深入整合到新平台。

  • 因此,我們的終極目標是讓周邊裝置自訂功能成為使用 Googlebook 時非常自然的體驗,並協助使用者以自己想要的方式工作。

  • 好的。

  • 請務必前往樓下的攤位,親自體驗 Options+ 和出色的 Logitech 裝置。

  • 感謝合作夥伴 Google,也感謝各位撥冗參與。

  • 謝謝大家

程式碼

程式碼片段

「Peripheral customization API overview」影片 26:16 的 Kotlin 程式碼片段
// Vendor and product Information
const val VENDOR_ID = 1234
val pid = 123

// Use the mouse Middle Button as the trigger
val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)

// Set Voice Assistant as the action
val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
val action = actionBuilder.build()

val im = context.getSystemService(INPUT_SERVICE) as InputManager
im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)