bdAR

立即使用

initAR addARListener openAR cleanARKitModule downloadARCase cancelDownLoadArCase downloadAR addDownloadARListener cancelAllTask loadAR startAR pauseAR resumeAR stopAR destroyCase loadLocalAR initSameSearch loadSameSearch startImageSearch stopSameSearch addSameSearchListener destroyCaseForSameSearch changeToFrontCamera takePicture startRecordingWithAudioTrack stopRecording initVoice addVoiceListener startVoice stopVoice isSupportAR closeAR

概述

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附加自定义模块制作方法:

下载 bdARAppendix 模块 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})

params

appID:

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

apiKey:

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

secretKey:

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

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.initAR({
  3. appID:'',
  4. apiKey:'',
  5. secretKey:''
  6. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addARListener

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

addARListener(callback(ret))

callback(ret)

ret:

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

示例代码

  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. progress:0, //数字类型;进度值,不与其他值一起返回
  4. arKey:'', //字符串类型;arkey
  5. arType:'', //字符串类型;artype(仅iOS支持)
  6. filePath:'', //字符串类型;case本地路径(仅iOS支持)
  7. result:{}, //json对象类型;结果
  8. }

示例代码

  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支持)

cancelAllTask()

示例代码

  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()

示例代码

  1. var bdAR = api.require('bdAR');
  2. bdAR.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:

  • 类型:字符串类型
  • 描述:case对应的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. var bdAR = api.require('bdAR');
  2. bdAR.stopSameSearch();

可用性

iOS系统

可提供的1.0.0及更高版本

addSameSearchListener

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

addSameSearchListener(callback(ret))

callback(ret)

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. {
  2. status: true, //布尔型;只会返回true,代表销毁完成
  3. }

示例代码

  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可使用模块bvRecognizer

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可使用模块bvRecognizer

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. }

示例代码

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

可用性

iOS系统

可提供的1.0.0及更高版本

closeAR

关闭AR页面

closeAR()

示例代码

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

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本