绘本sdk上层接口
<h3>type.h头文件</h3>
<p>``` c++
/<em>SDK接口返回的错误码和出错回调的错误码</em>/
typedef enum {
//下面的错误码是SDK函数接口函数的返回值
E_VTSTORYBK_OK, //SUCCESS
E_VTSTORYBK_FAILED = -1, //FAIL</p>
<pre><code>E_VTSTORYBK_ALREADY_STARTED = -1000, //绘本已经启动过,比如start多次会得到此错误返回
E_VTSTORYBK_NOT_STARTED = -1001, //绘本还未启动 ,比如还未start就stop会得到此错误返回值
E_VTSTORYBK_PARAMS_ERROR = -1002, //函数调用参数非法错误
//下面的错误码由SDK错误回调通知外部,回调函数不能做阻塞耗时操作,获取到错误码应快速退出。
E_VTSTORYBK_LOGIN_FAILED = -1300, //绘本登录失败
E_VTSTORYBK_NETWORK_NOT_CONNECTED = -1301, //网络未连接
E_VTSTORYBK_LOW_MEMORY = -1302, //无内存,malloc 失败之类的
E_VTSTORYBK_SERVER_RESOLVE_HOST_FAILED = -1303, //解析服务器域名失败
E_VTSTORYBK_SERVER_CONNECT_HOST_FAILED = -1304, //连接服务器失败
E_VTSTORYBK_SERVER_TIMEOUT = -1305, //连接服务器超时
E_VTSTORYBK_SERVER_ABNORMAL = -1306, //服务器异常无法访问
E_VTSTORYBK_SERVER_RESPONSE_ERROR = -1307, //服务器返回错误码
E_VTSTORYBK_SERVER_RESPONSE_TIMEOUT = -1308, //识别超时太久
E_VTSTORYBK_DISK_SPACE_NOT_ENOUGH = -1309, //磁盘空间不足
E_VTSTORYBK_RECOGNIZE_RESPONSE_WRONG_FAILED = -1310, //recongnize response wrong failed,识别返回信息不完整
//服务器识别错误码
E_VTSTORYBK_SERVER_RESPONSE_ERROR_10007 = -1311, //10007
E_VTSTORYBK_SERVER_RESPONSE_ERROR_10000 = -1312, //10000
E_VTSTORYBK_SERVER_RESPONSE_ERROR_10014 = -1313, //10014
} E_VTSTORYBK_ERRORCODE;
/*提示音设置相关int setGlobalSettings(E_VT_PARAMS_OP_TYPE type, int value)*/
typedef enum VT_PARAMS_OP_TYPE {
VT_SET_PARAMS_NULL,
VT_SET_PARAMS_NET_NOT_CONNECT_TIPINTERVAL, //断网,网络未连接 提示音间隔,单位都是秒
VT_SET_PARAMS_LOGIN_FAIL_TIPINTERVAL, //登陆licence 校验失败提示音间隔
VT_SET_PARAMS_DOWNLOAD_TIPINTERVAL, //首次下载相关提示音间隔
VT_SET_PARAMS_DECOMPRESS_TIPINTERVAL, //首次下载相关提示音间隔
VT_SET_PARAMS_PLACE_COVERPAGE_TIPINTERVAL, //提示放封面页 提示音间隔
VT_SET_PARAMS_PLACE_COVERPAGE_TIPCOUNTS, //提示放封面页 需要提示的次数
VT_SET_PARAMS_PLACE_PAGE_TIPINTERVAL, //提示翻页 提示音间隔
VT_SET_PARAMS_PLACE_PAGE_TIPCOUNTS, //提示翻页 需要提示的次数
VT_SET_PARAMS_NET_POOL_TIPINTERVAL, //弱网提示音间隔
VT_SET_PARAMS_SERVER_REQUEST_TIMEOUT, //暂无使用
VT_SET_PARAMS_FINGER_LOC_PLAY_SELF_RESOURCE, //设置点读命中热区后是否播放顽瞳资源 1:回调的同时也播放顽瞳点读热区资源 0:仅回调不播放
VT_SET_PARAMS_RECONGNIZE_ONLY, //just only recongnize, do not play the audios
VT_GET_PARAMS_MEDIA_IS_ONLINEPLAY = 256, //获取是否在线播放
VT_GET_PARAMS_NET_NOT_CONNECT_TIPINTERVAL,
VT_GET_PARAMS_LOGIN_FAIL_TIPINTERVAL,
VT_GET_PARAMS_DOWNLOAD_TIPINTERVAL,
VT_GET_PARAMS_DECOMPRESS_TIPINTERVAL,
VT_GET_PARAMS_PLACE_COVERPAGE_TIPINTERVAL,
VT_GET_PARAMS_PLACE_COVERPAGE_TIPCOUNTS,
VT_GET_PARAMS_PLACE_PAGE_TIPINTERVAL,
VT_GET_PARAMS_PLACE_PAGE_TIPCOUNTS,
VT_GET_PARAMS_NET_POOL_TIPINTERVAL,
VT_GET_PARAMS_SERVER_REQUEST_TIMEOUT,
VT_GET_PARAMS_FINGER_LOC_PLAY_SELF_RESOURCE,
VT_GET_PARAMS_RECONGNIZE_ONLY,
VT_PARAMS_MAX = 512,
} E_VT_PARAMS_OP_TYPE;
enum {
VT_NATIVE_FILE_PLAY, //本地下载资源播放
VT_ONLINE_FILE_PLAY //在线播放
};
enum {
VT_ORIGINAL_MEDIA_PLAY = 0, //云端MP3明文数据播放
VT_ENCRYPT_MEDIA_PLAY, //云端MP3密文数据播放
};
//出错回调函数
//回调函数都不能做阻塞和耗时操作,获取到数据缓存下来应快速退出。
typedef int (*vtStoryErrorCb)(int errorCode, void *userp);
//手指坐标
typedef struct tag_vtFingerData_s {
/*手指相对图像X坐标*/
int finger_img_x;
/*手指相对图像Y坐标*/
int finger_img_y;
/*手指相对书本X坐标*/
int finger_bk_x;
/*手指相对书本Y坐标*/
int finger_bk_y;
/*热区index*/
int hot_index;
/*扩展数据*/
std::string extraData;
/*热区名字*/
std::string positionName;
} vtFingerData_t;
//手指识别信息回调
typedef int (*vtFingerStateCb)(vtFingerData_t &amp;data, void *userp);
typedef struct tag_Point2f {
float x;
float y;
} vtPoint2F;
/*template&lt;int VERSION&gt; struct VTARGS{};
template&lt;&gt; struct VTARGS&lt;0&gt;{
float x;
float y;
};*/
namespace vtstorybk {
#define VT_SUCCEED 0
#define VT_FAILED -1
#define VT_ERROR -1
} // namespace vtstorybk
#endif //__VT_TYPES_H__</code></pre>
<pre><code>
###上层接口
``` c++
class VTStoryBook {
//============对外开放接口==============
//============error code define in types.h, return 0[E_VTSTORYBK_OK] on success other on fail=======
public:
static VTStoryBook *getInstance(); //创建绘本实例
static int Destory(); //销毁绘本实例
int start(); //开始绘本功能
int pause(int action = 0); //暂停绘本功能
int resume(int action = 0); //恢复绘本功能
int stop(); //结束绘本功能
int AudioStop(); //停止当前正在播放的音频
int registerCamera(VTCameraAbs *pCamera = NULL); //注册相机实例
int registerInternetListener(VTInternetListener *pInternet = NULL); //注册网络监测
int registerDownloadNotify(VTDownloadNotify *dlnotyfy = NULL); //注册下载通知实例
int registerMediaPlayerNotify(VTMediaPlayerNotify *player = NULL); //注册正文播放完成通知实例 2019-4-1
int registerRecognizeNotify(VTRecognizeNotify *recognotify = NULL); //注册识别状态通知实例
int registerVoiceMediaPlayer(VTMediaPlayerAbs *pMediaPlayer = NULL); //注册语音播放器实例
int registerBgMediaPlayer(VTMediaPlayerAbs *pMediaPlayer = NULL); //注册背景音播放器实例
int registerSysMediaPlayer(VTMediaPlayerAbs *pMediaPlayer = NULL); //注册系统公共音播放器实例
int registerEffectMediaPlayer(VTMediaPlayerAbs *pMediaPlayer = NULL); //注册背景音播放器实例
int registerResourceManager(VTResourceManagerAbs *pResourceManager = NULL); //注册资源管理器实例
int registerGetDeviceInfo(VTGetDeviceInfoAbs *pGetDeviceInfo = NULL); //注册获取设备信息,如果需要用自定义设备ID,需要定义实现这个。否则SDK默认使用WLAN 的物理地址作为设备ID
int registerErrorCb(vtStoryErrorCb errorCb, void *userp); //注册错误码回调通知
int setLicensePath(std::string path = &quot;&quot;); //设置license.lcs路径,如/etc/license.lcs
int setAudioPath(std::string path = &quot;&quot;); //设置音频播放路径,如/mnt/sdcard/huiben/audio/
int setDownloadPath(std::string path = &quot;&quot;); //设置下载缓存路径,如/mnt/sdcard/huiben/download/
int setSysAudioPath(std::string path = &quot;&quot;); //设置系统音路径,如/mnt/sdcard/huiben/sysaudios/
int setMachineType(std::string path = &quot;&quot;); //设置机器机型,该机型与算法相关,由玩瞳提供;相关参数包括:1、高度;2、角度;3、分辨率;4、摄像头FOV
int getGlobalSettings(E_VT_PARAMS_OP_TYPE type, int *value); //设置参数
int setGlobalSettings(E_VT_PARAMS_OP_TYPE type, int value); //获取参数
std::string getOpenID(); //获取openid,用于家长端获取阅读记录
std::string getToken(); //获取token,用于请求玩瞳HTTP 接口,有时效性,SDK会自动更新,如再次缓存需注意
int setCAFilePath(std::string path = &quot;&quot;); //设置CA证书文件路径,用于HTTPS SSL认证 比如 /etc/cacert.pem, 需要编译为支持HTTPS版本
int registerFingerStateCb(vtFingerStateCb stateCb, int mode, void *userp); //注册Finger通知,mode 参数 1:回调的同时也播放顽瞳点读热区资源 0:仅回调不播放
/*
* args: 协商好的数据类型,一般是vtPoint2F
* elementCount: 数据元素个数, 一般是1
* elementSize: 数据类型的大小 (比如sizeof(vtPoint2F))
* 该接口不能在vtFingerStateCb 回调函数里调用,不然可能死循环
*/
int pushFingerData2Alg(void *args, int elementCount, int elementSize); //外部传入点读笔的坐标,输出为点读笔相对书本的坐标(通过vtFingerStateCb回调)
//注意:任何一个参数有变化都可能会影响识别率,所以参数变化时必须通知玩瞳公司
};</code></pre>