第一台 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...

相关推荐
Sunlightʊə2 小时前
2.登录页测试用例
运维·服务器·前端·功能测试·单元测试
Code Crafter3 小时前
ES6-ES14 新特性速查
前端·ecmascript·es6
Lhuu(重开版3 小时前
CSS从0到1
前端·css·tensorflow
RainbowC03 小时前
从Dalvik字节码角度优化安卓编码
android·java/jvm
河铃旅鹿4 小时前
Android开发-java版:布局
android·笔记·学习
不说别的就是很菜4 小时前
【前端面试】HTML篇
前端·html
前端一小卒4 小时前
生产环境Sourcemap策略:从苹果事故看前端构建安全架构设计
前端·javascript
im_AMBER4 小时前
React 18
前端·javascript·笔记·学习·react.js·前端框架
老前端的功夫4 小时前
Vue2中key的深度解析:Diff算法的性能优化之道
前端·javascript·vue.js·算法·性能优化
Meteors.5 小时前
安卓进阶——RxJava
android·rxjava