ARCore全称为GooglePlayServicesforAR,这是谷歌官方推出构建增强现实应用的AndriodSDK,此服务可解锁由 ARCore 打造的增强现实 (AR) 体验。它通过将虚拟内容与真实世界环境无缝融合,改变人们游戏、购物、学习、创作和体验世界的方式。ARCore最初于2017年8月发布,作为苹果ARKit的对标产品。它利用手机摄像头、传感器和处理器,实现对现实世界的感知与理解,让虚拟物体能够自然地叠加在真实场景中。截至2025年,ARCore已支持超过1.5亿台设备,覆盖Pixel系列、三星Galaxy系列、小米系列等主流机型,并与三星、小米等厂商保持深度合作。

1、动作捕捉:使用手机的传感器和相机,ARCore可以准确感知手机的位置和姿态,并改变显示的虚拟物体的位置和姿态
2、环境感知:感知平面,比如你面前的桌子、地面,在虚拟空间中准确复现这个平面
3、光源感知:使用手机的环境光传感器,感知环境光照情况,对应调整虚拟物体的亮度、阴影和材质,让它看起来更融入环境。

【运动追踪】
当您的手机在现实世界中移动时,ARCore 会使用一种称为同时定位和映射(即 SLAM)的过程来理解手机相对于周围环境的位置。ARCore 会检测捕获的摄像头图像中视觉上不同的特征(称为特征点),并使用这些点来计算其位置变化。这些视觉信息会与设备 IMU 的惯性测量结果相结合,以估算摄像头相对于周围世界的姿态(位置和方向)。
通过将渲染 3D 内容的虚拟摄像头的方向与 ARCore 提供的设备摄像头的方向对齐,开发者能够从正确的视角渲染虚拟内容。渲染的虚拟图像可以叠加在从设备相机获取的图像上,使虚拟内容看起来像是现实世界的一部分。

【环境识别】
通过检测特征点和平面来不断改善它对现实世界环境的理解。
ARCore 会查找看起来位于常见水平或垂直表面(如桌子或墙)上的成组特征点,并将这些表面以几何平面的形式提供给您的应用。还可以确定每个几何平面的边界,并将该信息提供给您的应用。您可以使用这些信息将虚拟对象放置在平坦的表面上。
由于使用特征点来检测平面,因此可能无法正确检测没有纹理的平坦表面,例如白墙。

【深度理解】
可以使用支持的设备上的主 RGB 摄像头创建深度图,即包含有关表面与给定点之间距离的数据的图像。您可以使用深度图提供的信息来实现身临其境的逼真用户体验,例如使虚拟对象与观察到的表面准确发生碰撞,或使虚拟对象显示在真实对象的前面或后面。
【光估测】
可以检测其环境光线的相关信息,并为您提供给定摄像头图像的平均强度和色彩校正。通过这些信息,您可以在与周围环境相同的条件下为虚拟对象提供光照,从而增强现实感。

1、使用即时展示位置
点按屏幕以放置对象。在屏幕上显示全息对象后,请确保继续来回移动设备,以便ARCore可以获取有关周围环境的足够数据,从而准确锚定虚拟对象。
一旦ARCore检测到Surface几何图形,并在放置对象的区域确立了可跟踪对象,对象姿势便会自动进行更新。

在图1中,Instant Placement已停用,且Surface几何图形未定义。位于台球桌右侧地板上的对象(四个小蓝点)出现翻转状态,其姿态则未定义。
在图2中,从齿轮图标下的菜单启用了Instant Placement。
在图3中,在启用Instant Placement功能后,场景中放置了一个新对象。它以灰度模式显示,而非彩色显示,表示系统尚未将其更正为正确的姿势。
在图4中,当检测到Surface几何图形(由可跟踪的网格线描述)时,新对象会变为彩色,并且其姿势准确无误。
2、使用深度
启用深度后,ARCore会考虑场景中对象的几何图形和位置,并计算场景中对象相对于场景中其他对象的位置。它可让场景中的对象遮挡住对象,并让您的应用具有真实感。

在图1中,深度已停用。一个对象会放在池表下。
在图2中,当设备在池表中移动时,无论场景中的物体是什么,该对象看起来都跟随设备。
在图3中,启用了深度。
在图4中,当设备在场景中移动时,对象现在被池表遮挡。
如需开始在 Android 上使用 ARCore,您可以运行 ARCore SDK 附带的 hello_ar_kotlin 或 hello_ar_java 示例应用。这些示例应用使用 OpenGL,这是一种用于渲染 2D 和 3D 矢量图形的编程接口。这些应用会显示检测到的所有平面,并允许用户点按平面来放置 3D 模型。

1、设置您的开发环境
安装 Android SDK Platform 7.0(API 级别 24)或更高版本的 Android Studio 3.1 版或更高版本。
2、打开示例项目
(1)在 Android Studio 中,克隆 ARCore SDK GitHub 代码库。
为此,您可以采用多种方式:
对于现有的 Android Studio 安装:
从 Git 菜单中选择 Clone。
在 Version control 下拉菜单中,选择 Git 作为版本控制系统。
在 URL 字段中,输入 ARCore GitHub 代码库
(2)按如下方式打开一个示例项目(您必须明确打开一个项目才能构建并运行该项目)。
从 File 菜单中选择 Open。
在 arcore-android-sdk/samples 文件夹中,选择 hello_ar_kotlin 或 hello_ar_java 文件夹,然后点击 Open。
3、准备设备或模拟器
您可以在受支持的设备或 Android 模拟器上运行 AR 应用。您必须先在模拟器上更新 AR 服务的 Google Play 服务,然后才能运行该应用。
4、运行示例
确保您的 Android 设备已连接到开发机器,然后点击 Android Studio 中的 Run 。
Android Studio 将您的项目构建为可调试的 APK,安装该 APK,然后在您的设备上运行该应用。
如果适用于 AR 的 Google Play 服务缺失或已过期,系统可能会提示您安装或更新。选择 CONTINUE 可从 Google Play 商店安装它,或按照更新 AR 版 Google Play 服务中的说明手动更新该应用。
借助 hello_ar_java 应用,您可以在检测到的 AR 平面上放置一个三维 ARCore 典当。它通过 Android GL SurfaceView 实现,Android GL SurfaceView 用于渲染相机预览和基本 AR 对象,例如平面和锚点。可以在 com/google/ar/core/examples/java/common/samplerender 中找到 hello_ar_java 的示例渲染框架。

注意:hello_ar_java 中的生命周期方法与 OpenGL 应用中通常提供的生命周期方法不同。为确保您自己的应用的 AR 设置正确无误,请遵循 hello_ar_java 中的生命周期管理逻辑。
5、使用即时展示位置
借助 Instant Placement API,用户可以将 AR 对象置于屏幕上,而无需等待 ARCore 检测表面几何图形。随着用户继续在环境中移动,系统会实时优化对象放置位置。一旦 ARCore 能够在放置 AR 对象的区域中检测到正确的姿态,白色对象便会自动更新为姿态准确,并变为不透明。
hello_ar_java 中会自动启用 Instant Placement。点按屏幕上的齿轮图标,然后从下拉菜单中选择 Instant Placement。您应该已经选中 Enable Instant Placement 复选框。
点按屏幕以放置对象。在屏幕上显示全息对象后,请务必继续来回移动设备,以便 ARCore 可以获取关于周围环境的足够数据来准确锚定虚拟对象。
ARCore 可以在运行 Android 7.0 (Nougat) 及更高版本系统的多种符合资格的 Android 手机上使用。 在开发者预览版期间,ARCore 支持以下设备(如下图)

后来扩大了其它设备的支持(如下图)

1、为什么打开应用后黑屏或闪退?
因为AR需要相机权限,所以应用没有检查权限时会发生异常退出。如果相机权限已打开,则是应用自身问题。
2、为什么虚拟物体容易飘或平面长时间识别不出来?
因为AR需要现实环境有一些图案特征,如果手机的摄像头朝着洁白的墙壁、纯色的地面等会无法工作,所以AR物体容易飘。
3、为什么安装了ARCore,应用仍提示安装ARCore?
因为手机安装的ARCore版本低于应用需要的ARCore版本,所以ARCore仍然提示安装。虽然ARCore没有图形界面,但可以在系统设置的应用列表中找到ARCore,查看版本号和卸载旧版本。
4、为什么很多应用一开始要拿着手机扫描地面?
因为AR需要一个水平面来固定虚拟物体,地面和桌面是比较好的水平面,所以要先扫描地面。但在地面固定虚拟物体不是唯一的方式,还可以在图像上固定、在空间固定、点击屏幕固定。
5、ARCore反复提示“已停止运行”并且无法工作?
部分机型安装了1.8版,ARCore会反复提示“已停止运行”。若出现该问题,请更换成稳定的1.7版或最新版本的ARCore。
v1.45.242050283:
Google Play Services for AR会自动安装和更新到符合条件的设备上,因此Google Play Store中具有AR功能的应用程序无需下载和安装任何进一步的内容即可运行。
本版本新增功能:
•更新了支持的设备列表。