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对象
- 内部字段:
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支持)
//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;是否成功
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支持)
示例代码
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()
可用性
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:
- 类型:字符串类型
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()
示例代码
bdAR.stopSameSearch();
可用性
iOS系统
可提供的1.0.0及更高版本
addSameSearchListener
添加识图监听(仅iOS支持,android在addARListener接口回调)
addSameSearchListener(callback(ret))
callback(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对象
- 内部字段:
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可使用模块)
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可使用模块)
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不支持
}
示例代码
可用性
iOS系统
可提供的1.0.0及更高版本
closeAR
关闭AR页面
closeAR()
示例代码
var bdAR = api.require('bdAR');
iOS系统,Android系统