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 文件打包成一个附加自定义插件上传 YonBuilder移动开发 平台。
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功能)。
初始化AR
initAR({params})
appID:
apiKey:
secretKey:
var bdAR = api.require('bdAR');
bdAR.initAR({
appID:'',
apiKey:'',
secretKey:''
});
iOS系统,Android系统
可提供的1.0.0及更高版本
添加AR监听(iOS必须在openAR接口调用以后调用才会生效)
addARListener(callback(ret))
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
打开AR页面
openAR(callback(ret))
type:
arKey:
path:
ret:
{
status: true //布尔型;true||false;是否成功播放
}
var bdAR = api.require('bdAR');
bdAR.openAR(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
清除AR(仅iOS支持)
cleanARKitModule()
var bdAR = api.require('bdAR');
bdAR.cleanARKitModule();
iOS系统
可提供的1.0.0及更高版本
下载AR资源包(iOS必须在openAR接口调用以后调用才会生效)
downloadARCase({params},callback(ret))
arKey:
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
取消下载AR资源包
arKey:
cancelDownLoadArCase()
var bdAR = api.require('bdAR');
bdAR.cancelDownLoadArCase();
iOS系统,Android系统
可提供的1.0.0及更高版本
预下载AR(仅iOS支持)
downloadAR({params})
arKey:
var bdAR = api.require('bdAR');
bdAR.downloadAR({
arKey:''
});
iOS系统
可提供的1.0.0及更高版本
下载AR资源包监听(仅iOS支持)
addDownloadARListener(callback(ret))
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
取消所有预下载(仅iOS支持)
cancelAllTask()
var bdAR = api.require('bdAR');
bdAR.cancelAllTask();
iOS系统,Android系统
可提供的1.0.0及更高版本
从网络加载AR(仅iOS支持,android在openAR中设置,iOS必须在openAR接口调用以后调用才会生效)
loadAR({params},callback(ret))
arKey:
ret:
{
status: true, //布尔型;true||false;是否成功
arKey:'', //字符串类型;arkey
arType:'', //字符串类型;artype
}
var bdAR = api.require('bdAR');
bdAR.loadAR({
arKey:''
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
启动AR(仅iOS支持)
startAR()
var bdAR = api.require('bdAR');
bdAR.startAR();
iOS系统
可提供的1.0.0及更高版本
暂停AR
pauseAR()
var bdAR = api.require('bdAR');
bdAR.pauseAR();
iOS系统,Android系统
可提供的1.0.0及更高版本
恢复AR
resumeAR()
var bdAR = api.require('bdAR');
bdAR.resumeAR();
iOS系统,Android系统
可提供的1.0.0及更高版本
停止AR,停止AR后会关闭AR页面,调用此方法后,需要开发者调用API对象的bringFrameToFront方法将加载在AR页面上的view调整 frame 到前面(仅iOS支持)
stopAR()
var bdAR = api.require('bdAR');
bdAR.stopAR();
iOS系统
可提供的1.0.0及更高版本
销毁AR(仅iOS支持)
destroyCase(callback(ret))
ret:
{
status: true, //布尔型;只会返回true,代表销毁完成
}
var bdAR = api.require('bdAR');
bdAR.destroyCase(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
从本地加载AR(仅iOS支持,android在openAR中设置,iOS必须在openAR接口调用以后调用才会生效,必须设置addARListener接口后才能调用此接口,不然会照成崩溃)
loadLocalAR({params},callback(ret))
arType:
path:
ret:
{
status: true, //布尔型;true||false;是否成功
arKey:'', //字符串类型;arkey
arType:'', //字符串类型;artype
}
var bdAR = api.require('bdAR');
bdAR.loadLocalAR({
path:'',
arType:''
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
初始化识图组件(iOS必须在加载AR完成以后调用才会生效)
initSameSearch({params},callback(ret))
type:
ret:
{
status: true, //布尔型;true||false;是否成功
}
var bdAR = api.require('bdAR');
bdAR.initSameSearch({
type:0
},function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
加载识图组件(仅iOS支持,android通过loadLocalAR或loadAR接口load)
loadSameSearch()
var bdAR = api.require('bdAR');
bdAR.loadSameSearch();
iOS系统
可提供的1.0.0及更高版本
开始识图(仅iOS支持)
startImageSearch()
var bdAR = api.require('bdAR');
bdAR.startImageSearch();
iOS系统
可提供的1.0.0及更高版本
停止识图(仅iOS支持)
stopSameSearch()
var bdAR = api.require('bdAR');
bdAR.stopSameSearch();
iOS系统
可提供的1.0.0及更高版本
添加识图监听(仅iOS支持,android在addARListener接口回调)
addSameSearchListener(callback(ret))
ret:
{
evenType:'', //字符串类型;事件类型
//取值取下:
//result:识图结果
//download:下载完成本地识图下载特征库成功
//error:识图错误
result:{}, //json对象类型;识图结果
error:{ //json对象类型;错误信息,识图错误时返回
code:0, //数字类型;错误码
msg:'' //字符串类型;错误信息
}
}
var bdAR = api.require('bdAR');
bdAR.addSameSearchListener(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
销毁当前已经加载的case,重新调起识图(仅iOS支持)
destroyCaseForSameSearch(callback(ret))
ret:
{
status: true, //布尔型;只会返回true,代表销毁完成
}
var bdAR = api.require('bdAR');
bdAR.destroyCaseForSameSearch(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
设置是否是前置摄像头(iOS必须在openAR接口调用以后调用才会生效)
changeToFrontCamera({params})
isFront:
var bdAR = api.require('bdAR');
bdAR.changeToFrontCamera({
isFront:true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
拍照(iOS必须在加载AR完成以后调用才会生效)
takePicture(callback(ret))
path:
ret:
{
status:, //布尔类型;拍照状态
imagePath:'', //字符串类型;拍照图片的本地路径
}
var bdAR = api.require('bdAR');
bdAR.takePicture(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开始录制
startRecordingWithAudioTrack({params})
enable:
path:
maxTime:
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
停止录制
stopRecording(callback(ret))
ret:
{
status: true, //布尔型;只会返回true,代表停止录制完成
videoPath:'' //字符类型;视频路径
}
var bdAR = api.require('bdAR');
bdAR.stopRecording(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
初始化语音识别(仅iOS支持,android可使用插件bvRecognizer)
initVoice()
var bdAR = api.require('bdAR');
bdAR.initVoice();
iOS系统
可提供的1.0.0及更高版本
添加语音识别监听(仅iOS支持,android可使用插件bvRecognizer)
addVoiceListener(callback(ret))
ret:
{
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) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
启动语音识别(仅iOS支持,android可使用插件bvRecognizer)
startVoice()
var bdAR = api.require('bdAR');
bdAR.startVoice();
iOS系统
可提供的1.0.0及更高版本
结束语音识别(仅iOS支持,android可使用插件bvRecognizer)
stopVoice()
var bdAR = api.require('bdAR');
bdAR.stopVoice();
iOS系统
可提供的1.0.0及更高版本
判断当前设备是否支持AR功能(仅iOS支持,android在addARListener接口返回evenType为‘uiStateChange’ state为30001 时 即当前设备硬件不支持)
isSupportAR(callback(ret))
ret:
{
status: true, //布尔类型;是否支持AR功能;true支持,false不支持
}
var bdAR = api.require('bdAR');
bdAR.isSupportAR(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统
可提供的1.0.0及更高版本
关闭AR页面
closeAR()
var bdAR = api.require('bdAR');
bdAR.closeAR();
iOS系统,Android系统
可提供的1.0.0及更高版本