[ARCore] 00 - The First Demo
入門介紹
背景交代
一、参考
Ref: [Android-ARCore开发]ARCore从入门到放弃1-Demo上手
Ref: [Android-ARCore开发]ARCore从入门到放弃2-Demo介绍和扩展
Ref: ARcore初体验 -- 在Android模拟器中运行AR演示程序
二、use case
Goto: https://developers.google.com/ar/discover/use-cases
鏈接中的幾個例子:https://www.streem.pro/,還湊活.
三、ARCore环境
Ref: https://github.com/google-ar/arcore-android-sdk/releases
四 、編程基本知識
上手准备
1、Android studio 2.3及以上
2、支持的设备Pixel和三星S8
3、官方Demo 和 AR服务安装包
两个步骤
1、下载上面的AR服务安装包,安装到设备上
2、Studio打开官方Demo,运行到设备上
-
"AR服务安装包"是什么?
Demo打开之后自动检测平面,手指触摸平面会在触摸位置放置一个机器人。
网格、小点和机器人都是使用OpenGL在SurfaceView上绘制的
* 什么是SurfaceView
Surface意为表层、表面,顾名思义SurfaceView就是指一个在表层的View对象。为什么说是在表层呢?
这是因为它有点特殊跟其他View不一样,其他View是绘制在“表层”的上面,而它就是充当“表层”本身。
SDK的文档 说到:SurfaceView就是在窗口上挖一个洞,它就是显示在这个洞里,其他的View是显示在窗口上,所以View可以显式在 SurfaceView之上,你也可以添加一些层在SurfaceView之上。
* 使用SurfaceView
从API中可以看出SurfaceView属于View的子类 它是专门为制作游戏而产生的,它的功能非常强大,最重要的是它支持OpenGL ES库,2D和3D的效果都可以实现。
创建SurfaceView的时候需要实现 SurfaceHolder.Callback 接口,它可以用来监听SurfaceView的状态,比如:
-
- SurfaceView的改变 、
- SurfaceView的创建 、
- SurfaceView 销毁等,
我们可以在相应的方法中做一些比如初始化的操作或者清空的操作等等。
* View的局限
Android系统提供了 View 进行绘图处理,我们通过自定义的View可以满足大部分的绘图需求,但是这有个问题就是我们通常自定义的View是用于主动更新情况的,用户无法控制其绘制的速度,由于View是通过invalidate方法通知系统去调用view.onDraw方法进行重绘,而Android系统是通过发出VSYNC信号来进行屏幕的重绘,刷新的时间是16ms,如果在16ms内View完成不了执行的操作,用户就会看着卡顿,比如当draw方法里执行的逻辑过多,需要频繁刷新的界面上,例如游戏界面,那么就会不断的阻塞主线程,从而导致画面卡顿。
* 另辟蹊径
SurfaceView 相当于是另一个绘图线程,它是不会阻碍主线程,并且它在底层实现机制中实现了双缓冲机制。
基本步骤
一、安装 Android Studio
二、下载 ARcore SDK
获取方式
三、安装Android SDK
四、创建Android模拟器
点开Show Advanced Settings,然后设置后置相机的选项为VirtualScene。
五、啓動模擬器
创建好后,启动模拟器,并运行AR程序.
【代码需要研究下】
开发AR程序需要注意的事项
1. 确保程序中打开AR的配置项
目前有两个选项:必须(AR Required)和 可选(AR Optional)。
2. 添加构建依赖
3. 运行前检查ARCore
* 使用AR必选状态
所有的AR应用程序都必须在创建ARCore会话之前 调用 ArCoreApk.requestInstall ( )。检查是否安装了一个兼容版本的ARCore(它可能过时了,或者已经被用户手动删除),并提示用户。
* 使用AR可选状态
使用 ArCoreApk.checkAvailability() 来确定当前设备是否支持ARcore。
如果设备不支持ARcore,应用程序应该禁用AR-related功能并且隐藏相关的UI元素。
Next: how to get each frame?