Skip to content
This repository has been archived by the owner on Dec 23, 2020. It is now read-only.

android sdk 接口说明

xiegaoxi edited this page Jun 12, 2018 · 4 revisions

ARControler调用接口类如下:

/**
 * 开启百度AR功能
 *
 * @param source   ar输入参数
 * @param target   ar返回参数
 * @param callback 用于DuMix操作即中间状态回调
 */
void setup(DuMixSource source, DuMixTarget target, DuMixCallback callback);

/**
 * 切换AR场景
 *
 * @param source ar输入参数
 */
void changeCase(DuMixSource source);

/**
 * 暂停AR场景显示,暂停算法,但是资源并未释放
 * 细化以下说明
 */
void pause();

/**
 * 恢复AR场景显示,开启算法
 * 前提是资源已经加载,并已经调用了pause
 */
void resume();

/**
 * 将当前场景重置,及模型及算法恢复最初位置与状态
 */
void reset();

/**
 * 输入相机Preview的YUV420SP数据
 *
 * @param data   camera previewCallback返回的YUV数据
 * @param width  YUV data数据的宽
 * @param height YUV data数据的高
 */
void onCameraPreviewFrame(final byte[] data, int width, int height);

/**
 * 屏幕点触事件传入
 *
 * @param event 屏幕点触事件
 */
boolean onTouchEvent(MotionEvent event);

/**
 * 手机横竖屏切换
 *
 * @param orientation 手机横竖屏方向
 */
void orientationChange(int orientation);

/**
 * 从上层将消息传入lua中,采用key-value的形式,value只支持int,float,bool和string类型
 *
 * @param msg2lua 屏幕点触事件
 */
boolean sendMessage2Lua(HashMap<String, Object> msg2lua);

//    /**
//     * 是否支持前置摄像头
//     *
//     * @param resFilePath 本地资源路径
//     */
//    boolean isSupportFrontCamera(String resFilePath);

/**
 * Camera Button点击
 */
void onClickCameraButton();

/**
 * 前后摄像头切换
 *
 * @param front 是否是前摄像头
 */
void switchCamera(boolean front);

/**
 * 拍照
 *
 * @param outputFile 拍照文件输出路径与名称
 * @param callback   拍照结果及文件路径返回
 */
void takePicture(String outputFile, TakePictureCallback callback);

/**
 * 拍照
 *
 * @param callback 拍照结果及bitmap返回
 */
void takePicture(TakePictureCallback2 callback);

/**
 * 开始录像
 *
 * @param outputFile  录像文件输出路径与名称
 * @param totalTimeMs 录像最长时间(单位毫秒)
 * @param callback    录像过程回调
 */
void startRecord(String outputFile, long totalTimeMs, MovieRecorderCallback callback);

/**
 * 结束录像
 */
void stopRecord();

//    /**
//     * 是否包含音乐
//     *
//     * @param resFilePath 本地资源路径
//     */
//    boolean isContainMisic(String resFilePath);

/**
 * 结束ar,释放相关资源
 */
void release();

/**
 * 离线下载case接口
 */
void downloadCase(String arKey, ArCaseDownloadListener listener);

/**
 * 取消下载case接口
 */
void cancelDownloadCase(String arKey);

setup参数DuMixSource类说明如下:

// ar场景的唯一标示ID
private String mArKey;

// 如果是百度服务器下载资源,则以下两个参数无需设置
// ar场景类型,目前支持Track,IMU,SLAM
private int mArType = -1;
// ar场景所需要的资源
private String mResFilePath;

// 如果最终输出不需要绘制相机数据,以下三个参数则无需设置
// 相机数据输入
private boolean mFrontCamera = false;
private SurfaceTexture mCameraSource;
private int mSourceWidth = 0;
private int mSourceHeight = 0;

setup参数DuMixTarget类说明如下:

// ar绘制目标,用于将最终绘制完的图像返回
private SurfaceTexture mDrawTarget;
private SurfaceTexture.OnFrameAvailableListener mTargetFrameAvailableListener;
// 返回目标的宽高
private int mTargetWidth;
private int mTargetHeight;
// 绘制返回目标变形控制
private ScaleType mScaleType;
// 是否绘制相机背景
private boolean mDrawPreview;

操作结果及内部状态回调接口如下:

DuMixCallback:

/**
 * 百度AR内部流程状态返回
 *
 * @param state 内部流程状态,用于被动状态返回
 * @param data  外部需要的相关信息,比如提示字符串等
 */
void onStateChange(int state, Object data);

/**
 * lua消息透传给上层的接口
 *
 * @param luaMsg lua消息
 */
void onLuaMessage(HashMap<String, Object> luaMsg);

/**
 * 百度AR内部错误状态返回
 *
 * @param error 内部错误状态,用于被动状态返回
 * @param msg   内部错误信息
 */
void onStateError(int error, String msg);

/**
 * 百度AR启动结果返回
 *
 * @param result 是否成功
 */
void onSetup(boolean result);

/**
 * AR场景切换结果返回
 *
 * @param result 是否成功
 */
void onCaseChange(boolean result);

/**
 * AR case创建成功
 *
 * @param arResource 创建的arResource资源
 */
void onCaseCreated(ARResource arResource);

/**
 * AR场景暂停返回
 *
 * @param result 是否成功
 */
void onPause(boolean result);

/**
 * AR场景恢复返回
 *
 * @param result 是否成功
 */
void onResume(boolean result);

/**
 * AR场景重置,恢复初始状态
 *
 * @param result 是否成功
 */
void onReset(boolean result);

/**
 * 百度AR结束结果返回
 *
 * @param result 是否成功
 */
void onRelease(boolean result);

TakePictureCallback:

/**
 * 拍照结果返回
 *
 * @param result   是否成功
 * @param filePath 生成文件的路径
 */
void onPictureTake(boolean result, String filePath);

MovieRecorderCallback:

void onRecorderStart(boolean result);

void onRecorderProcess(int process);

void onRecorderComplete(boolean result, String outFilePath);

void onRecorderError(int error);