- bdAR
- 概述
- initAR
- addARListener
- openAR
- cleanARKitModule
- downloadARCase
- params
- cancelDownLoadArCase
- params
- downloadAR
- params
- addDownloadARListener
- cancelAllTask
- loadAR
- params
- startAR
- pauseAR
- resumeAR
- stopAR
- destroyCase
- loadLocalAR
- params
- initSameSearch
- params
- loadSameSearch
- startImageSearch
- stopSameSearch
- addSameSearchListener
- destroyCaseForSameSearch
- changeToFrontCamera
- takePicture
- startRecordingWithAudioTrack
- stopRecording
- initVoice
- addVoiceListener
- startVoice
- stopVoice
- isSupportAR
- closeAR
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
示例代码
var bdAR = api.require('bdAR');
bdAR.initAR({
appID:'',
apiKey:'',
secretKey:''
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
addARListener
添加AR监听(iOS必须在openAR接口调用以后调用才会生效)
addARListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
evenType:'', //字符串类型;事件类型
//取值取下:
//uiStateChange:该回调会接受运行时AR的消息
//luaMsg:该回调会接受case发出的消息
//showAlertEvent:AR事件
//stateError:百度AR内部错误状态返回;(仅android支持)
//setup:百度AR启动结果(仅android支持)
//caseChange:场景切换结果(仅android支持)
//caseCreated:case创建成功(仅andriod支持)
//pause:暂停返回(仅android支持)
//resume:场景恢复返回(仅android支持)
//reset:场景重置返回(仅android支持)
//release:结束返回(仅android支持)
state:0, //数字类型;evenType == uiStateChange时返回
//取值如下:
//-1:未知
//0:跟上
//1:跟丢隐藏模型
//2:跟丢显示模型
//3:跟踪超时
//4:距离正常
//5:距离过近
//6:距离过远
//1111:授权失败(仅android支持)
//1201:so加载成功(仅android支持)
//1202:so加载失败(仅android支持)
//4202:zip解压失败(仅android支持)
//4203:json解析失败(仅android支持)
//2000:截图成功(仅android支持)
//2001:录制成功(仅android支持)
//2299、2251 :网络未连接(仅android支持)
//1810:slam 模型消失(仅android支持)
//1811:imu 模型消失(仅android支持)
//1812:2D算法跟丢(仅android支持)
//30001:硬件不支持(仅android支持)
//2531:切换摄像头(仅android支持)
msgType:0, //数字类型;evenType == showAlertEvent时返回
//取值如下:
//-1:未知
//0:网络异常
//1:版本太低
//2:机型、系统、SDK版本等不支持
//3:出错
//4:出错
//5:分布下载出错
//6:lua中调起AlertView
//7:鉴权失败
type:0, //数字类型;evenType == luaMsg时返回(仅iOS支持)
//取值如下:
//-1:未知
//1000:自定义
//1001:打开URL
//1002:开启前置摄像头
//1003:前后摄像头切换
//1004:引导页点击
//1005:ative UI处理(显示、隐藏)
//1006:关闭AR
//1007:弹出alert
//1008:弹出toast
//1009:切换case
//1010:Logo识别开始
//1011:Logo识别结束
//1012:分布加载batch包(失败后弹窗)
luaMsg:{ //Json对象类型;lua消息 evenType == luaMsg时返回(仅andriod支持)
},
errCode:, //数字类型;错误状态 evenType == stateError时返回(仅andriod支持)
errMsg:'', //字符串类型;错误信息;evenType == stateError时返回(仅andriod支持)
setupRes:, //布尔类型;是否启动成功;evenType == setup时返回(仅andriod支持)
caseChangeRes:, //布尔类型;是否场景切换成功;evenType == caseChange时返回(仅andriod支持)
pauseRes:, //布尔类型;是否暂停成功;evenType == pause时返回(仅andriod支持)
resumeRes:, //布尔类型;是否恢复成功;evenType == resume时返回(仅andriod支持)
resetRes:, //布尔类型;是否恢复成功;evenType == reset时返回(仅andriod支持)
releaseRes:, //布尔类型;是否恢复成功;evenType == release时返回(仅andriod支持)
info:{}, //json对象类型;信息 (仅iOS支持)
}
示例代码
var bdAR = api.require('bdAR');
bdAR.addARListener(function(ret) {
alert(JSON.stringify(ret));
});
可用性
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对象
- 内部字段:
{
status: true //布尔型;true||false;是否成功播放
}
示例代码
var bdAR = api.require('bdAR');
bdAR.openAR(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
cleanARKitModule
清除AR(仅iOS支持)
cleanARKitModule()
示例代码
var bdAR = api.require('bdAR');
bdAR.cleanARKitModule();
可用性
iOS系统
可提供的1.0.0及更高版本
downloadARCase
下载AR资源包(iOS必须在openAR接口调用以后调用才会生效)
downloadARCase({params},callback(ret))
params
arKey:
- 类型:字符串类型
- 描述:arkey
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true, //布尔型;true||false;是否成功
progress:0, //数字类型;进度值,不与其他值一起返回
arKey:'', //字符串类型;arkey
arType:'', //字符串类型;artype(仅iOS支持)
filePath:'', //字符串类型;case本地路径(仅iOS支持)
result:{}, //json对象类型;结果
}
示例代码
var bdAR = api.require('bdAR');
bdAR.downloadARCase({
arKey:''
},function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
cancelDownLoadArCase
取消下载AR资源包
params
arKey:
- 类型:字符串类型
- 描述:arkey(仅android支持)
cancelDownLoadArCase()
示例代码
var bdAR = api.require('bdAR');
bdAR.cancelDownLoadArCase();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
downloadAR
预下载AR(仅iOS支持)
downloadAR({params})
params
arKey:
- 类型:字符串类型
- 描述:arkey
示例代码
var bdAR = api.require('bdAR');
bdAR.downloadAR({
arKey:''
});
可用性
iOS系统
可提供的1.0.0及更高版本
addDownloadARListener
下载AR资源包监听(仅iOS支持)
addDownloadARListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
evenType:'', //字符串类型;事件类型
//取值取下:
//downloadProgress:下载进度
//taskResult:下载完成
//caseTaskQueryArResourceSuccess:查询完成
//caseTaskDealloc:查询销毁
status: true, //布尔型;true||false;下载是否成功,下载完成时返回
arKey:'', //字符串类型;arkey
progress:0, //数字类型;进度值,不与其他值一起返回,下载进度事件返回
result:{}, //json对象类型;结果,下载完成返回
error:{ //json对象类型;错误信息,下载失败返回
code:0, //数字类型;错误码
msg:'' //字符串类型;错误信息
}
}
示例代码
var bdAR = api.require('bdAR');
bdAR.addDownloadARListener(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统
可提供的1.0.0及更高版本
cancelAllTask
取消所有预下载(仅iOS支持)
cancelAllTask()
示例代码
var bdAR = api.require('bdAR');
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中返回
{
status: true, //布尔型;true||false;是否成功
arKey:'', //字符串类型;arkey
arType:'', //字符串类型;artype
}
示例代码
var bdAR = api.require('bdAR');
bdAR.loadAR({
arKey:''
},function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统
可提供的1.0.0及更高版本
startAR
启动AR(仅iOS支持)
startAR()
示例代码
var bdAR = api.require('bdAR');
bdAR.startAR();
可用性
iOS系统
可提供的1.0.0及更高版本
pauseAR
暂停AR
pauseAR()
示例代码
var bdAR = api.require('bdAR');
bdAR.pauseAR();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
resumeAR
恢复AR
resumeAR()
示例代码
var bdAR = api.require('bdAR');
bdAR.resumeAR();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
stopAR
停止AR,停止AR后会关闭AR页面,调用此方法后,需要开发者调用API对象的bringFrameToFront方法将加载在AR页面上的view调整 frame 到前面(仅iOS支持)
stopAR()
示例代码
var bdAR = api.require('bdAR');
bdAR.stopAR();
可用性
iOS系统
可提供的1.0.0及更高版本
destroyCase
销毁AR(仅iOS支持)
destroyCase(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true, //布尔型;只会返回true,代表销毁完成
}
示例代码
var bdAR = api.require('bdAR');
bdAR.destroyCase(function(ret) {
alert(JSON.stringify(ret));
});
可用性
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对象
- 内部字段:
{
status: true, //布尔型;true||false;是否成功
arKey:'', //字符串类型;arkey
arType:'', //字符串类型;artype
}
示例代码
var bdAR = api.require('bdAR');
bdAR.loadLocalAR({
path:'',
arType:''
},function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统
可提供的1.0.0及更高版本
initSameSearch
初始化识图组件(iOS必须在加载AR完成以后调用才会生效)
initSameSearch({params},callback(ret))
params
type:
- 类型:数字类型
- 描述:(可选项)识图类型(仅iOS支持)
- 默认:6
- 取值范围:
- 6:本地识图
- 7:云端识图
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true, //布尔型;true||false;是否成功
}
示例代码
var bdAR = api.require('bdAR');
bdAR.initSameSearch({
type:0
},function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
loadSameSearch
加载识图组件(仅iOS支持,android通过loadLocalAR或loadAR接口load)
loadSameSearch()
示例代码
var bdAR = api.require('bdAR');
bdAR.loadSameSearch();
可用性
iOS系统
可提供的1.0.0及更高版本
startImageSearch
开始识图(仅iOS支持)
startImageSearch()
示例代码
var bdAR = api.require('bdAR');
bdAR.startImageSearch();
可用性
iOS系统
可提供的1.0.0及更高版本
stopSameSearch
停止识图(仅iOS支持)
stopSameSearch()
示例代码
var bdAR = api.require('bdAR');
bdAR.stopSameSearch();
可用性
iOS系统
可提供的1.0.0及更高版本
addSameSearchListener
添加识图监听(仅iOS支持,android在addARListener接口回调)
addSameSearchListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
evenType:'', //字符串类型;事件类型
//取值取下:
//result:识图结果
//download:下载完成本地识图下载特征库成功
//error:识图错误
result:{}, //json对象类型;识图结果
error:{ //json对象类型;错误信息,识图错误时返回
code:0, //数字类型;错误码
msg:'' //字符串类型;错误信息
}
}
示例代码
var bdAR = api.require('bdAR');
bdAR.addSameSearchListener(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统
可提供的1.0.0及更高版本
destroyCaseForSameSearch
销毁当前已经加载的case,重新调起识图(仅iOS支持)
destroyCaseForSameSearch(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true, //布尔型;只会返回true,代表销毁完成
}
示例代码
var bdAR = api.require('bdAR');
bdAR.destroyCaseForSameSearch(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统
可提供的1.0.0及更高版本
changeToFrontCamera
设置是否是前置摄像头(iOS必须在openAR接口调用以后调用才会生效)
changeToFrontCamera({params})
params
isFront:
- 类型:布尔类型
- 描述:是否是前置摄像头
- 默认:true
示例代码
var bdAR = api.require('bdAR');
bdAR.changeToFrontCamera({
isFront:true
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
takePicture
拍照(iOS必须在加载AR完成以后调用才会生效)
takePicture(callback(ret))
path:
- 类型:字符串类型
- 描述:拍照后图片保存路径,支持原生路径以及fs路径(仅android支持)
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
status:, //布尔类型;拍照状态
imagePath:'', //字符串类型;拍照图片的本地路径
}
示例代码
var bdAR = api.require('bdAR');
bdAR.takePicture(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
startRecordingWithAudioTrack
开始录制
startRecordingWithAudioTrack({params})
params
enable:
- 类型:布尔类型
- 描述:(可选项)是否带音频(仅iOS支持)
- 默认:true
path:
- 类型:字符串类型
- 描述:拍照后图片保存路径,支持原生路径以及fs路径(仅android支持)
maxTime:
- 类型:数字类型
- 描述:最大录制时间,毫秒(仅android支持)
ret:
- 类型:JSON对象(仅android支持)
- 内部字段:
{
eventType:'', //字符串类型;返回事件
//‘recorderStart’ 开始录制
//‘process’ 录制进度
//‘recorderComplete’ 录制完成
//‘recorderError’ 录制错误
startRes:, //布尔类型;eventType 为 ‘recorderStart’ 时返回
process:, //数字类型;录制进度 当进度大于100时停止录制 eventType 为 ‘process’ 时返回
completeB:, //布尔类型 eventType 为 ‘recorderComplete’ 时返回
completeRes:'', //字符串类型;eventType 为 ‘recorderComplete’ 时返回
errorCode:, //数字类型;eventType 为 ‘recorderError’ 时返回
}
示例代码
var bdAR = api.require('bdAR');
bdAR.startRecordingWithAudioTrack({
enable:true
},function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
stopRecording
停止录制
stopRecording(callback(ret))
callback(ret)
ret:
- 类型:JSON对象(仅iOS支持,android在startRecordingWithAudioTrack接口回调)
- 内部字段:
{
status: true, //布尔型;只会返回true,代表停止录制完成
videoPath:'' //字符类型;视频路径
}
示例代码
var bdAR = api.require('bdAR');
bdAR.stopRecording(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
initVoice
初始化语音识别(仅iOS支持,android可使用模块bvRecognizer)
initVoice()
示例代码
var bdAR = api.require('bdAR');
bdAR.initVoice();
可用性
iOS系统
可提供的1.0.0及更高版本
addVoiceListener
添加语音识别监听(仅iOS支持,android可使用模块bvRecognizer)
addVoiceListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
evenType:'', //字符串类型;事件类型
//取值取下:
//voiceStart:开始
//voiceStop:结束
//statusChange:状态改变
status: true, //布尔型;true||false;是否开始成功
state:0, //数字类型; 改变的状态
//取值范围:
//0:showLoading
//1:stopLoading
//2:showWave
//3:stopWave
//4:waveChangeVolume
//5:showTips
//6:hideVoice
aObj:0 //数字类型;值
}
示例代码
var bdAR = api.require('bdAR');
bdAR.addVoiceListener(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
startVoice
启动语音识别(仅iOS支持,android可使用模块bvRecognizer)
startVoice()
示例代码
var bdAR = api.require('bdAR');
bdAR.startVoice();
可用性
iOS系统
可提供的1.0.0及更高版本
stopVoice
结束语音识别(仅iOS支持,android可使用模块bvRecognizer)
stopVoice()
示例代码
var bdAR = api.require('bdAR');
bdAR.stopVoice();
可用性
iOS系统
可提供的1.0.0及更高版本
isSupportAR
判断当前设备是否支持AR功能(仅iOS支持,android在addARListener接口返回evenType为‘uiStateChange’ state为30001 时 即当前设备硬件不支持)
isSupportAR(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
status: true, //布尔类型;是否支持AR功能;true支持,false不支持
}
示例代码
var bdAR = api.require('bdAR');
bdAR.isSupportAR(function(ret) {
alert(JSON.stringify(ret));
});
可用性
iOS系统
可提供的1.0.0及更高版本
closeAR
关闭AR页面
closeAR()
示例代码
var bdAR = api.require('bdAR');
bdAR.closeAR();
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本