第一台 Andriod XR 设备发布,Jetpack Compose XR 有什么不同?对原生开发有何影响?

近日三星推出了首款 Galaxy XR 设备,这是第一款基于 Android XR 的 Android 设备,而 Android XR 是为下一代耳机和眼镜推出的新操作系统。

作为对标苹果 Vision Pro 的设备, Galaxy XR 搭载的是 Android XR 系统 , Android XR 基于开放标准构建,并支持 OpenXR、WebXR 和 Unity 等工具,例如可以通过 360 度支持的 VR 内容,体验沉浸式的视频和应用交互:

还可以使用 Circle 搜索虚拟对象(或房间中的真实物品),从网络上获取有关所看到的任何事物的有用信息:

还有自由调整、伸缩的应用交互,同步进行操作的视野空间,这就是 Android XR 的不同至于,支持在 AR 和 VR 之间无缝切换:

而在此基础上,为了提供更好的开发体验,官方提供了 Jetpack XR SDK,而基于 SDK 开发的 UI 框架也就是熟悉的 Jetpack Compose ,那它有什么特别之处

首先,在 XR 设备上应用的展示和操作风格发生了较大改变,而 Jetpack XR SDK 的作用就是:让开发者可以直接使用 Kotlin + Compose 进行开发,减少全新 XR 工具链门槛 ,让持原有 2D 应用能直接在 XR 设备(尤其 Home Space 模式)中"无修改"运行,从而降低适配成本。

什么是 Home Space ?这就需要见到 Android XR 的关键基本概念,首先应用程序可以运行的两种模式:主空间和全空间:

Home Space 中 ,多个应用可以并排运行,方便用户跨不同窗口执行多任务,从这个意义上来说,它很像在大屏幕 Android 设备上的桌面窗口:

而如果在 Full Space 中 ,应用没有空间边界,可以利用 Android XR 的完整空间功能,例如 spatial UI 和控制虚拟环境,这个情况更像是一个普通大屏幕,不需要太多的定位操作。

而实际开发过程中,应用其实往往需要适配两种不同场景切换,这才是 XR 设备里最需要的适配场景:

具体对比为:

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 元素或对象:

用户通过将主手的手掌向内、捏合并握住食指和拇指来导航,手向上、向下、向左或向右移动, 释放以选择一个选项:

以上这些都是需要适配的不同之处,其他是其实还是使用 Compose 进行布局,不同的是使用 spatial layouts 的 SpatialRowsSpatialColumn之类:

还有使用 SpatialPanel来显示文本、按钮和视频等 2D 内容等,SpatialPanel 是一个 subspace composable ,而Orbiter 可以附加到 SpatialPanel 上,并随其所附加的内容一起移动, 它们通常用于提供与其所附加内容相关的上下文控件,让内容成为主要焦点,一般可以放置在内容的四个侧面中的任意一个:

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

}

这也是 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...

相关推荐
muyouking114 小时前
Tailwind CSS 小白快速入门速查手册
前端·css·css3
社恐的下水道蟑螂5 小时前
用 n8n 打造 AI 科技新闻速览工作流:自动化获取、总结,每天高效充电
前端
陈随易5 小时前
PaddleOCR-VL可太强了,图片识别转文字的巅峰之作
前端·后端·程序员
盗德5 小时前
紧急项目下,前端是“先乱炖”还是“慢火煲汤”?我选第三条路
前端·程序员
zmirror5 小时前
Monorepo单仓多包&独立部署
前端
Linsk5 小时前
为什么BigInt无法通过Babel降级?
前端·typescript·前端工程化
Asort5 小时前
JavaScript设计模式(十八)——备忘录模式:状态保存与恢复的艺术
前端·javascript·设计模式
over6975 小时前
AI科技新闻速览自动化:使用n8n工作流打造个人AI助手
前端