bdAR

initAR openAR downloadARCase downloadAR cancelAllTask startAR resumeAR destroyCase initSameSearch startImageSearch addSameSearchListener changeToFrontCamera startRecordingWithAudioTrack initVoice startVoice isSupportAR

概述

bdAR模块封装了DuMix AR SDK,DuMix AR SDK是百度AR提供给开发者的AR应用开发集成方案,具有效果领先、快速接入、超轻量、灵活易用、跨平台等特性,提供多种触发方式、感知跟踪、虚实融合、人机交互等AR核心技术。

关于license文件

百度AR SDK需要配置 license 文件方可正常使用,开发者需要自己从百度AR官网创建的应用中获取 license 文件,然后将 license 文件打包成一个附加自定义模块上传 APICloud 平台。

iOS附加自定义模块制作方法:

下载 bdARAppendix 模块 zip 包并解压,把 zip 包内 target 目录下的 aip.license 文件替换为自己从百度AR官网创建的应用中获取的 license 文件。然后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。

android附加自定义模块制作方法:

下载 模块 zip 包并解压,把 zip 包内 bdARAppendix.aar更改后缀为.zip并解压,解压后assets文件夹下 aip.license 文件替换为自己从百度AR官网创建的应用中获取的 license 文件。然后重新压缩bdARAppendix并更改后缀为aar并压缩整个模块包为 zip 包文件上传自定义模块,云编译时勾选该模块。

注意:本模块 iOS 平台上最低适配系统版本为 iOS 8.0

注意:架构:本模块iOS只支持arm64架构(代码可通过 isSupportAR接口来判断当前设备是否支持AR功能)。

initAR

初始化AR

initAR({params})

appID:

  • 类型:字符串
  • 描述:在百度AR平台前台网站申请创建应用以获取的appID

apiKey:

  • 类型:字符串
  • 描述:在平台前台网站申请创建应用以获取的apiKey

secretKey:

  • 类型:字符串
  • 描述:在百度AR平台前台网站申请创建应用以获取的secretKey

示例代码

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addARListener

添加AR监听(iOS必须在openAR接口调用以后调用才会生效)

addARListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. evenType:'', //字符串类型;事件类型
  2. //取值取下:
  3. //uiStateChange:该回调会接受运行时AR的消息
  4. //luaMsg:该回调会接受case发出的消息
  5. //showAlertEvent:AR事件
  6. //stateError:百度AR内部错误状态返回;(仅android支持)
  7. //setup:百度AR启动结果(仅android支持)
  8. //caseChange:场景切换结果(仅android支持)
  9. //caseCreated:case创建成功(仅andriod支持)
  10. //pause:暂停返回(仅android支持)
  11. //resume:场景恢复返回(仅android支持)
  12. //reset:场景重置返回(仅android支持)
  13. //release:结束返回(仅android支持)
  14. state:0, //数字类型;evenType == uiStateChange时返回
  15. //取值如下:
  16. //-1:未知
  17. //0:跟上
  18. //1:跟丢隐藏模型
  19. //2:跟丢显示模型
  20. //3:跟踪超时
  21. //4:距离正常
  22. //5:距离过近
  23. //6:距离过远
  24. //1111:授权失败(仅android支持)
  25. //1201:so加载成功(仅android支持)
  26. //1202:so加载失败(仅android支持)
  27. //4202:zip解压失败(仅android支持)
  28. //2000:截图成功(仅android支持)
  29. //2001:录制成功(仅android支持)
  30. //2299、2251 :网络未连接(仅android支持)
  31. //1810:slam 模型消失(仅android支持)
  32. //1811:imu 模型消失(仅android支持)
  33. //1812:2D算法跟丢(仅android支持)
  34. //30001:硬件不支持(仅android支持)
  35. //2531:切换摄像头(仅android支持)
  36. msgType:0, //数字类型;evenType == showAlertEvent时返回
  37. //取值如下:
  38. //-1:未知
  39. //0:网络异常
  40. //1:版本太低
  41. //2:机型、系统、SDK版本等不支持
  42. //3:出错
  43. //4:出错
  44. //5:分布下载出错
  45. //6:lua中调起AlertView
  46. //7:鉴权失败
  47. type:0, //数字类型;evenType == luaMsg时返回(仅iOS支持)
  48. //取值如下:
  49. //-1:未知
  50. //1000:自定义
  51. //1001:打开URL
  52. //1002:开启前置摄像头
  53. //1003:前后摄像头切换
  54. //1004:引导页点击
  55. //1005:ative UI处理(显示、隐藏)
  56. //1006:关闭AR
  57. //1007:弹出alert
  58. //1008:弹出toast
  59. //1009:切换case
  60. //1010:Logo识别开始
  61. //1011:Logo识别结束
  62. //1012:分布加载batch包(失败后弹窗)
  63. luaMsg:{ //Json对象类型;lua消息 evenType == luaMsg时返回(仅andriod支持)
  64. },
  65. errCode:, //数字类型;错误状态 evenType == stateError时返回(仅andriod支持)
  66. errMsg:'', //字符串类型;错误信息;evenType == stateError时返回(仅andriod支持)
  67. setupRes:, //布尔类型;是否启动成功;evenType == setup时返回(仅andriod支持)
  68. caseChangeRes:, //布尔类型;是否场景切换成功;evenType == caseChange时返回(仅andriod支持)
  69. pauseRes:, //布尔类型;是否暂停成功;evenType == pause时返回(仅andriod支持)
  70. resumeRes:, //布尔类型;是否恢复成功;evenType == resume时返回(仅andriod支持)
  71. resetRes:, //布尔类型;是否恢复成功;evenType == reset时返回(仅andriod支持)
  72. releaseRes:, //布尔类型;是否恢复成功;evenType == release时返回(仅andriod支持)
  73. info:{}, //json对象类型;信息 (仅iOS支持)
  74. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.addARListener(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

openAR

打开AR页面

openAR(callback(ret))

params

type:

  • 类型:数字类型
  • 描述:AR资源type(仅android支持)
  • 取值范围:0/2D跟踪类型,5/SLAM类型,6/本地识图,7/云端识图,8/IMU类型

arKey:

  • 类型:字符串类型
  • 描述:arkey,与path参数二选一(仅android支持)

path:

  • 类型:字符串类型
  • 描述:case资源包路径,与arKey参数二选一,同时存在时arKey优先级高(仅android支持)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true //布尔型;true||false;是否成功播放
  3. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.openAR(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

cleanARKitModule

清除AR(仅iOS支持)

cleanARKitModule()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.cleanARKitModule();

可用性

iOS系统

可提供的1.0.0及更高版本

downloadARCase

下载AR资源包(iOS必须在openAR接口调用以后调用才会生效)

downloadARCase({params},callback(ret))

params

arKey:

  • 类型:字符串类型
  • 描述:arkey

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false;是否成功
  3. arKey:'', //字符串类型;arkey
  4. arType:'', //字符串类型;artype(仅iOS支持)
  5. filePath:'', //字符串类型;case本地路径(仅iOS支持)
  6. result:{}, //json对象类型;结果
  7. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.downloadARCase({
  3. arKey:''
  4. },function(ret) {
  5. alert(JSON.stringify(ret));
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

cancelDownLoadArCase

取消下载AR资源包

params

arKey:

  • 类型:字符串类型
  • 描述:arkey(仅android支持)

cancelDownLoadArCase()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.cancelDownLoadArCase();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

downloadAR

预下载AR(仅iOS支持)

downloadAR({params})

params

arKey:

  • 类型:字符串类型
  • 描述:arkey

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.downloadAR({
  3. arKey:''
  4. });

可用性

iOS系统

可提供的1.0.0及更高版本

addDownloadARListener

下载AR资源包监听(仅iOS支持)

addDownloadARListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. evenType:'', //字符串类型;事件类型
  3. //取值取下:
  4. //downloadProgress:下载进度
  5. //taskResult:下载完成
  6. //caseTaskQueryArResourceSuccess:查询完成
  7. //caseTaskDealloc:查询销毁
  8. status: true, //布尔型;true||false;下载是否成功,下载完成时返回
  9. arKey:'', //字符串类型;arkey
  10. progress:0, //数字类型;进度值,不与其他值一起返回,下载进度事件返回
  11. result:{}, //json对象类型;结果,下载完成返回
  12. error:{ //json对象类型;错误信息,下载失败返回
  13. code:0, //数字类型;错误码
  14. msg:'' //字符串类型;错误信息
  15. }
  16. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.addDownloadARListener(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统

可提供的1.0.0及更高版本

cancelAllTask

取消所有预下载(仅iOS支持)

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.cancelAllTask();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

loadAR

从网络加载AR(仅iOS支持,android在openAR中设置,iOS必须在openAR接口调用以后调用才会生效)

loadAR({params},callback(ret))

params

arKey:

  • 类型:字符串类型
  • 描述:arkey

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段: //仅iOS支持,android在接口addARListener中返回
  1. {
  2. status: true, //布尔型;true||false;是否成功
  3. arKey:'', //字符串类型;arkey
  4. arType:'', //字符串类型;artype
  5. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.loadAR({
  3. arKey:''
  4. },function(ret) {
  5. alert(JSON.stringify(ret));
  6. });

可用性

iOS系统

可提供的1.0.0及更高版本

startAR

启动AR(仅iOS支持)

startAR()

可用性

iOS系统

可提供的1.0.0及更高版本

pauseAR

暂停AR

pauseAR()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.pauseAR();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resumeAR

恢复AR

resumeAR()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.resumeAR();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopAR

停止AR,停止AR后会关闭AR页面,调用此方法后,需要开发者调用API对象的bringFrameToFront方法将加载在AR页面上的view调整 frame 到前面(仅iOS支持)

stopAR()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.stopAR();

可用性

iOS系统

可提供的1.0.0及更高版本

destroyCase

销毁AR(仅iOS支持)

destroyCase(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;只会返回true,代表销毁完成
  3. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.destroyCase(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统

可提供的1.0.0及更高版本

loadLocalAR

从本地加载AR(仅iOS支持,android在openAR中设置,iOS必须在openAR接口调用以后调用才会生效,必须设置addARListener接口后才能调用此接口,不然会照成崩溃)

loadLocalAR({params},callback(ret))

params

arType:

  • 类型:字符串类型

path:

  • 类型:字符串类型
  • 描述:case资源包路径,下载并解压完后的路径:比如 ../bar_10070173/ar/…,传递的参数filePath为../bar_10070173

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false;是否成功
  3. arKey:'', //字符串类型;arkey
  4. arType:'', //字符串类型;artype
  5. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.loadLocalAR({
  3. path:'',
  4. arType:''
  5. },function(ret) {
  6. alert(JSON.stringify(ret));
  7. });

可用性

iOS系统

可提供的1.0.0及更高版本

initSameSearch

初始化识图组件(iOS必须在加载AR完成以后调用才会生效)

initSameSearch({params},callback(ret))

params

type:

  • 类型:数字类型
  • 描述:(可选项)识图类型(仅iOS支持)
  • 默认:6
  • 取值范围:
    • 6:本地识图
    • 7:云端识图

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔型;true||false;是否成功
  3. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.initSameSearch({
  3. type:0
  4. },function(ret) {
  5. alert(JSON.stringify(ret));
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

loadSameSearch

加载识图组件(仅iOS支持,android通过loadLocalAR或loadAR接口load)

loadSameSearch()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.loadSameSearch();

可用性

iOS系统

可提供的1.0.0及更高版本

startImageSearch

开始识图(仅iOS支持)

startImageSearch()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.startImageSearch();

可用性

iOS系统

可提供的1.0.0及更高版本

stopSameSearch

停止识图(仅iOS支持)

stopSameSearch()

示例代码

  1. bdAR.stopSameSearch();

可用性

iOS系统

可提供的1.0.0及更高版本

addSameSearchListener

添加识图监听(仅iOS支持,android在addARListener接口回调)

addSameSearchListener(callback(ret))

callback(ret)

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. evenType:'', //字符串类型;事件类型
  3. //取值取下:
  4. //result:识图结果
  5. //download:下载完成本地识图下载特征库成功
  6. //error:识图错误
  7. result:{}, //json对象类型;识图结果
  8. error:{ //json对象类型;错误信息,识图错误时返回
  9. code:0, //数字类型;错误码
  10. msg:'' //字符串类型;错误信息
  11. }
  12. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.addSameSearchListener(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统

可提供的1.0.0及更高版本

destroyCaseForSameSearch

销毁当前已经加载的case,重新调起识图(仅iOS支持)

destroyCaseForSameSearch(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. var bdAR = api.require('bdAR');
  2. bdAR.destroyCaseForSameSearch(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统

可提供的1.0.0及更高版本

changeToFrontCamera

设置是否是前置摄像头(iOS必须在openAR接口调用以后调用才会生效)

changeToFrontCamera({params})

params

isFront:

  • 类型:布尔类型
  • 描述:是否是前置摄像头
  • 默认:true

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.changeToFrontCamera({
  3. isFront:true
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

takePicture

拍照(iOS必须在加载AR完成以后调用才会生效)

takePicture(callback(ret))

path:

  • 类型:字符串类型
  • 描述:拍照后图片保存路径,支持原生路径以及fs路径(仅android支持)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status:, //布尔类型;拍照状态
  3. imagePath:'', //字符串类型;拍照图片的本地路径
  4. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.takePicture(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startRecordingWithAudioTrack

开始录制

startRecordingWithAudioTrack({params})

params

enable:

  • 类型:布尔类型
  • 描述:(可选项)是否带音频(仅iOS支持)
  • 默认:true

path:

  • 类型:字符串类型
  • 描述:拍照后图片保存路径,支持原生路径以及fs路径(仅android支持)

maxTime:

  • 类型:数字类型
  • 描述:最大录制时间,毫秒(仅android支持)

ret:

  • 类型:JSON对象(仅android支持)
  • 内部字段:
  1. {
  2. eventType:'', //字符串类型;返回事件
  3. //‘recorderStart’ 开始录制
  4. //‘process’ 录制进度
  5. //‘recorderComplete’ 录制完成
  6. //‘recorderError’ 录制错误
  7. startRes:, //布尔类型;eventType 为 ‘recorderStart’ 时返回
  8. process:, //数字类型;录制进度 当进度大于100时停止录制 eventType 为 ‘process’ 时返回
  9. completeB:, //布尔类型 eventType 为 ‘recorderComplete’ 时返回
  10. completeRes:'', //字符串类型;eventType 为 ‘recorderComplete’ 时返回
  11. errorCode:, //数字类型;eventType 为 ‘recorderError’ 时返回
  12. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.startRecordingWithAudioTrack({
  3. enable:true
  4. },function(ret) {
  5. alert(JSON.stringify(ret));
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

stopRecording

停止录制

stopRecording(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象(仅iOS支持,android在startRecordingWithAudioTrack接口回调)
  • 内部字段:
  1. {
  2. status: true, //布尔型;只会返回true,代表停止录制完成
  3. videoPath:'' //字符类型;视频路径
  4. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.stopRecording(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

initVoice

初始化语音识别(仅iOS支持,android可使用模块)

initVoice()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.initVoice();

可用性

iOS系统

可提供的1.0.0及更高版本

addVoiceListener

添加语音识别监听(仅iOS支持,android可使用模块bvRecognizer

addVoiceListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. evenType:'', //字符串类型;事件类型
  3. //取值取下:
  4. //voiceStart:开始
  5. //voiceStop:结束
  6. //statusChange:状态改变
  7. status: true, //布尔型;true||false;是否开始成功
  8. state:0, //数字类型; 改变的状态
  9. //取值范围:
  10. //0:showLoading
  11. //1:stopLoading
  12. //2:showWave
  13. //3:stopWave
  14. //4:waveChangeVolume
  15. //5:showTips
  16. //6:hideVoice
  17. aObj:0 //数字类型;值
  18. }

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.addVoiceListener(function(ret) {
  3. alert(JSON.stringify(ret));
  4. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

startVoice

启动语音识别(仅iOS支持,android可使用模块)

startVoice()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.startVoice();

可用性

iOS系统

可提供的1.0.0及更高版本

stopVoice

结束语音识别(仅iOS支持,android可使用模块bvRecognizer

stopVoice()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.stopVoice();

可用性

iOS系统

可提供的1.0.0及更高版本

isSupportAR

判断当前设备是否支持AR功能(仅iOS支持,android在addARListener接口返回evenType为‘uiStateChange’ state为30001 时 即当前设备硬件不支持)

isSupportAR(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
  1. {
  2. status: true, //布尔类型;是否支持AR功能;true支持,false不支持
  3. }

示例代码

可用性

iOS系统

可提供的1.0.0及更高版本

closeAR

关闭AR页面

closeAR()

示例代码

  1. var bdAR = api.require('bdAR');

iOS系统,Android系统