bdAR

立即使用

概述

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及更高版本