🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

第一台 Android XR 設備發布,Jetpack Compose XR 有什麼不同?對原生開發有何影響?

近日三星推出了首款 Galaxy XR 設備,這是第一款基於 Android XR 的 Android 設備,而 Android XR 是為下一代耳機和眼鏡推出的新操作系統。

image-20251023102931852

作為對標蘋果 Vision Pro 的設備, Galaxy XR 搭載的是 Android XR 系統, Android XR 基於開放標準構建,並支持 OpenXR、WebXR 和 Unity 等工具,例如可以透過 360 度支持的 VR 內容,體驗沉浸式的視頻和應用互動:

image

還可以使用 Circle 搜尋虛擬物件(或房間中的真實物品),從網路上獲取有關所看到的任何事物的有用信息:

image

還有自由調整、伸縮的應用互動,同步進行操作的視野空間,這就是 Android XR 的不同之處,支持在 AR 和 VR 之間無縫切換:

image-20251023103213899

而在此基礎上,為了提供更好的開發體驗,官方提供了 Jetpack XR SDK,而基於 SDK 開發的 UI 框架也就是熟悉的 Jetpack Compose,那它有什麼特別之處

首先,在 XR 設備上應用的展示和操作風格發生了較大改變,而 Jetpack XR SDK 的作用就是:讓開發者可以直接使用 Kotlin + Compose 進行開發,減少全新 XR 工具鏈門檻,讓持原有 2D 應用能直接在 XR 設備(尤其是 Home Space 模式)中“無修改”運行,從而降低適配成本。

什麼是 Home Space?這就需要見到 Android XR 的關鍵基本概念,首先應用程序可以運行的兩種模式:主空間和全空間:

image-20251023104557469

Home Space 中,多個應用可以並排運行,方便用戶跨不同窗口執行多任務,從這個意義上來說,它很像在大螢幕 Android 設備上的桌面窗口:

image

而如果在 Full Space 中,應用沒有空間邊界,可以利用 Android XR 的完整空間功能,例如 spatial UI 和控制虛擬環境,這個情況更像是一個普通大螢幕,不需要太多的定位操作。

image

而實際開發過程中,應用其實往往需要適配兩種不同場景切換,這才是 XR 設備里最需要的適配場景:

image

具體對比為:

Home Space Full Space
多個應用並行運行,可以進行多任務處理 一次只運行一個應用,不受空間限制,所有其他應用均被隱藏
兼容自適應的 Compose 一般不需要額外開發 可以在全空間中空間化現有的 Android 應用
Home Space 支持系統環境,它不支持 spatial-ui、3d-content 或應用的 spatial environments(環境模擬) 支持 spatial-ui、3d-content 、 spatial environments(環境模擬)
應用程序具有受限的邊界,默認1024 x 720dp,最小尺寸 385 x 595dp,最大尺寸 2560 x 1800dp 應用可以覆蓋 panel-depth 並具有移動和調整大小的功能
應用程序在距離用戶 1.75 米處啟動 應用程序可以直接打開到完整空間,Unity 、 OpenXR 和 WebXR 應用在非托管的完整空間中運行

而 Android XR 裡的交互,將 press、pinch 和 swipe 等熟悉的移動操作擴展為基於手勢的導航系統,例如使用食指和拇指捏合來選擇項目,這相當於在空間上點擊觸摸屏或按下滑鼠按鈕,按住捏合可以滾動、移動或調整窗口大小,以及在 2D 和 3D 空間中選擇和移動 UI 元素或物件:

ezgif-83cbe7d34502f3

用戶透過將主手的手掌向內、捏合並握住食指和拇指來導航,手向上、向下、向左或向右移動,釋放以選擇一個選項:

ezgif-8d0632913c718c

以上這些都是需要適配的不同之處,其他是其實還是使用 Compose 進行佈局,不同的是使用 spatial layouts 的 SpatialRowsSpatialColumn 之類:

image-20251023110141752

還有使用 SpatialPanel 來顯示文本、按鈕和視頻等 2D 內容等,SpatialPanel 是一個 subspace composable ,而Orbiter 可以附加到 SpatialPanel 上,並與其所附加的內容一起移動,它們通常用於提供與其所附加內容相關的上下文控件,讓內容成為主要焦點,一般可以放置在內容的四個側面中的任意一個:

Subspace {
    SpatialPanel(
        SubspaceModifier
            .height(824.dp)
            .width(1400.dp)
    ) {
        Text("I'm a panel!")
    }
}

image

這也是 Jetpack XR SDK 提供的空間化 UI 建構工具,提供 SubspaceSpatialPanelSpatialRowSpatialColumnOrbiter 等新 Compose API,用於將 UI 放置在 3D 空間、控制大小、位置、拖動、縮放、深度,最重要的是

支持當設備/模式不支持空間化(如普通手機或 Home Space)時自動降級到 2D 表示,從而提高兼容性

另外還需要支持 XR 模式管理、環境、場景控制,例如:

  • SDK 提供 API 來檢測是否支持 XR 空間化特性(如 LocalSpatialConfiguration.current.hasXrSpatialFeature)以及切換到 Full Space 模式
  • 支持將 UI 內容置於不同空間模式(Home vs Full)
  • 支持環境、3D 模型、空間音頻、實體管理等 XR 特有功能

用一句話來總結:

Jetpack XR SDK(Compose for XR)讓你用熟悉的 Android Compose 構建跨設備的 UI,同時新增“空間化”能力(深度/3D 面板/拖動/縮放/模式切換等),從而將你的應用從二維螢幕拓展到 XR 沉浸式環境。

而從目前的情況下,這個賽道的跨平台支持很微弱,幾乎都是原生賽道,雖然目前場景不多,但是可以說是一個非常純淨的 Android 原生開發賽道了

另外其實還有一個賽道,智能眼鏡的獨立 app ,像雷鳥,meta ai,阿里夸克ai眼鏡,rokid 等等,基本都是純原生開發,沒有用一點跨平台,估計是因為和手機平台比較強關聯,涉及各種硬體和通訊協議處理,所以基本都是原生開發,目前看來這個賽道也基本都是純原生的淨土。

只能說,目前還有這樣純淨的原生開發賽道,不多了,實際上比如笨重和昂貴的 XR 頭戴賽道,智能眼鏡雖然嚴重依賴手機支持(畢竟才 200 毫安不到還要考慮發熱),但是它整體價格和場景會更豐富,相較之下更推薦 Android 原生開發嘗試。

那麼,你對 XR 有什麼看法呢?

參考連結

blog.google/products/an…

android-developers.googleblog.com/2025/10/bri…


原文出處:https://juejin.cn/post/7563923843783884863


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝27   💬3   ❤️7
627
🥈
我愛JS
📝1   💬9   ❤️1
72
🥉
御魂
💬1  
4
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付