玩瞳文档中心


识别接口

<h3><strong>概述</strong></h3> <p>该部分接口的入口类为 <strong>VTBRSDKManager</strong>,在调用该部分接口前,需要打开sdk和license认证通过,否则有可能会导致部分功能无法正常work。</p> <h3>1. 开启识别</h3> <p><strong>接口名称:</strong></p> <pre><code class="language-java">public void startRecognize()</code></pre> <p><strong>备注:</strong>开启识别前,该接口会停止当前下载任务</p> <h3>2. 重新识别</h3> <p>该接口用于某些情况下需要重新识别一次,例如网络断开后重连</p> <p><strong>接口名称:</strong></p> <pre><code class="language-java">public void reRecognize()</code></pre> <h3>3. 停止识别</h3> <p><strong>接口名称:</strong></p> <pre><code class="language-java">public void stopRecognize()</code></pre> <p><strong>备注:</strong>该接口会停止当前下载任务</p> <h3>4. 监听识别状态</h3> <p><strong>接口名称:</strong></p> <pre><code class="language-java">public void setRecognizeListener(IRecognizeListener listener)</code></pre> <h3>5. IRecognizeListener识别回调</h3> <p>该回调类用于监听识别回调,接口类如下:</p> <pre><code class="language-java">public interface IRecognizeListener { - boolean onRecognizeSuccess(VTBRBookDataModel data);//v3.1.1之前使用的是该方法 - boolean onRecognizeSuccess(VTBRBookDataModel data, byte[] bytes);//v3.1.1及之后使用的是该方法,bytes为识别的图像(格式为nv21) void onRecognizeFail(int code , int baseBookId, String msg); void onGetBookInfoFail(int code, String msg); boolean onGetBookInfoSuccess(int bookId, boolean needUpdate); boolean onGetCardInfoSuccess(CardInfoEntity cardInfoEntity, boolean needUpdate); boolean onGetPageAudio(PageAudio pageAudio); }</code></pre> <h4>5.1 onRecognizeSuccess</h4> <p>该回调为识别成功的回调</p> <p><strong>参数:</strong></p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>data</td> <td>VTBRBookDataModel</td> <td>书本数据对象</td> </tr> </tbody> </table> <p><strong>返回值:</strong></p> <p>是否消费该识别结果。true: 消费该识别结果, 则不走之后的获取书本信息、开始下载、播放书页音频等操作;false: 不消费该识别结果, 继续执行玩瞳的操作</p> <pre><code class="language-java">public boolean onRecognizeSuccess(VTBRBookDataModel data) { //是否消费该识别结果。true: 消费该识别结果, 则不走之后的获取书本信息、开始下载、播放书页音频等操作;false: 不消费该识别结果, 继续执行玩瞳的操作 return true; }</code></pre> <h5>5.1.1 VTBRBookDataModel类</h5> <table> <thead> <tr> <th>属性</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>groupId</td> <td>int</td> <td>卡片套系ID</td> </tr> <tr> <td>bookId</td> <td>int</td> <td>书本id</td> </tr> <tr> <td>pageId</td> <td>int</td> <td>书页id</td> </tr> <tr> <td>pageType</td> <td>int</td> <td>书页类型(1 封面、2封里、3扉页、4目录、5正文、6 辅文、7 封底里、8封底)</td> </tr> <tr> <td>pagination</td> <td>int</td> <td>页码</td> </tr> <tr> <td>physicalIndex</td> <td>int</td> <td><a href="https://www.showdoc.cc/visiontalk?page_id=2217068125466966">物理页码</a></td> </tr> <tr> <td>extraData</td> <td>String</td> <td>额外信息(即后台中用户输入的每页extraData信息)</td> </tr> <tr> <td>BookBean</td> <td>BookBean</td> <td>书本信息</td> </tr> <tr> <td>similarBooks</td> <td>List&lt;SimilarBooksBean&gt;</td> <td>相似书本信息(sdk2.0版本新增)。当存在与被识别书本高度相似的书本时,SDK返回的书本识别结果可能是错误的。此时SDK将通过similarBooks属性返回所有相似书本的ID。对于有屏设备,开发者可以将这些书本显示在屏幕上供用户选择,并将选择结果通过setupManualBookId(见本文第七点)接口上报玩瞳,这将大大提高内页识别的准确性。</td> </tr> <tr> <td>elapsedTime</td> <td>long</td> <td>识别耗时</td> </tr> <tr> <td>videoText</td> <td>String</td> <td>卡片额外信息(暂时无用)</td> </tr> </tbody> </table> <h5>5.1.2 RecognizeEntity.BrsBean.DataBean.BookBean类</h5> <table> <thead> <tr> <th>属性</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>bookId</td> <td>int</td> <td>书本id</td> </tr> <tr> <td>pageId</td> <td>String</td> <td>书页id</td> </tr> <tr> <td>bookName</td> <td>String</td> <td>书名</td> </tr> <tr> <td>thumbnailCoverImage</td> <td>String</td> <td>书页缩略图</td> </tr> <tr> <td>totalPage</td> <td>int</td> <td>物理页总数</td> </tr> <tr> <td>author</td> <td>String</td> <td>作者</td> </tr> <tr> <td>publisher</td> <td>String</td> <td>出版社</td> </tr> <tr> <td>isbn</td> <td>String</td> <td>ISBN</td> </tr> <tr> <td>seriesTitle</td> <td>String</td> <td>序列名</td> </tr> <tr> <td>description</td> <td>String</td> <td>书本简介</td> </tr> <tr> <td>mainPage</td> <td>int</td> <td>正文总页数(sdk2.0版本新增)</td> </tr> <tr> <td>securityId</td> <td>String</td> <td>书本安全ID(sdk2.0版本新增)</td> </tr> <tr> <td>resourceType</td> <td>int</td> <td>书本资源类型(1:领读;2:点读;3:领读&amp;点读)(sdk2.0版本新增)</td> </tr> <tr> <td>currentRepo</td> <td>BookResourceLibraryInfoEntity</td> <td>当前资源信息(sdk2.1.3版本新增)</td> </tr> </tbody> </table> <h5>5.1.3 RecognizeEntity.BrsBean.DataBean.SimilarBooksBean类</h5> <table> <thead> <tr> <th>属性</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>bookId</td> <td>int</td> <td>书本id</td> </tr> <tr> <td>priority</td> <td>int</td> <td>优先级</td> </tr> <tr> <td>repoId</td> <td>int</td> <td>书库id</td> </tr> </tbody> </table> <h5>5.1.4 BookResourceLibraryInfoEntity类</h5> <table> <thead> <tr> <th>属性</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>id</td> <td>int</td> <td>资源库id</td> </tr> <tr> <td>name</td> <td>String</td> <td>资源库名称</td> </tr> <tr> <td>bookId</td> <td>int</td> <td>书本id</td> </tr> <tr> <td>language</td> <td>int</td> <td>语言类型 ( 0 :未知 1 :中文 2:英文)</td> </tr> <tr> <td>soundRay</td> <td>int</td> <td>声线类型 ( 0 :未知 1 : 人声 2: TTS)</td> </tr> </tbody> </table> <h4>5.2 onRecognizeFail</h4> <p>该回调为识别失败的回调</p> <p><strong>参数:</strong></p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>code</td> <td>int</td> <td>错误码</td> </tr> <tr> <td>baseBookId</td> <td>int</td> <td>当识别到书本但是缺少资源等情况时 会回调当前书本的baseBookId</td> </tr> <tr> <td>msg</td> <td>String</td> <td>响应消息</td> </tr> </tbody> </table> <p><strong>备注:</strong>错误码请查看错误码章节</p> <h4>5.3 onGetBookInfoFail</h4> <p>该回调为获取书本信息失败的回调</p> <p><strong>参数:</strong></p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>code</td> <td>int</td> <td>错误码</td> </tr> <tr> <td>msg</td> <td>String</td> <td>响应消息</td> </tr> </tbody> </table> <p><strong>备注:</strong>错误码请查看错误码章节</p> <h4>5.4 onGetBookInfoSuccess</h4> <p>该回调为获取书本信息成功的回调 <strong>参数:</strong></p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>bookInfo</td> <td>BookInfoEntity</td> <td>书本Id</td> </tr> <tr> <td>needUpdate</td> <td>boolean</td> <td>是否需要更新</td> </tr> </tbody> </table> <p><strong>返回值 : </strong></p> <p>该接口如果返回true,则用户自己消费该回调接口,不会走之后的流程,用户可以用bookId实现自己的逻辑;如果返回false,则继续之后的流程(播放更新书本语音和下载书本信息等)。</p> <pre><code class="language-java">@Override public boolean onGetBookInfoSuccess(BookInfoEntity bookInfo, boolean needUpdate) { //该接口如果返回true,则用户自己消费该回调接口,不会走之后的流程,用户可以用bookId实现自己的逻辑; //如果返回false,则继续之后的流程(播放更新书本语音和下载书本信息等) return true; }</code></pre> <h5>5.4.1 BookInfoEntity类</h5> <table> <thead> <tr> <th>属性</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>id</td> <td>int</td> <td></td> </tr> <tr> <td>securityId</td> <td>String</td> <td>书本安全id(sdk2.0版本新增)</td> </tr> <tr> <td>bookId</td> <td>int</td> <td>书本id</td> </tr> <tr> <td>name</td> <td>String</td> <td>书名</td> </tr> <tr> <td>author</td> <td>String</td> <td>作者</td> </tr> <tr> <td>resourceDownloadURL</td> <td>String</td> <td>资源URL</td> </tr> <tr> <td>isbn</td> <td>String</td> <td>isbn号</td> </tr> <tr> <td>totalPage</td> <td>int</td> <td>物理页数</td> </tr> <tr> <td>thumbnailCoverImage</td> <td>String</td> <td>封面缩略图</td> </tr> <tr> <td>extraData</td> <td>String</td> <td>自定义数据</td> </tr> <tr> <td>repoId</td> <td>int</td> <td>资源库Id</td> </tr> <tr> <td>repoName</td> <td>Object</td> <td>资源库名称</td> </tr> <tr> <td>publisher</td> <td>String</td> <td>出版社</td> </tr> <tr> <td>seriesTitle</td> <td>String</td> <td>序列名</td> </tr> <tr> <td>description</td> <td>String</td> <td>书本简介</td> </tr> </tbody> </table> <h4>5.5 onGetCardInfoSuccess</h4> <p>该回调为获取卡片信息成功的回调 <strong>参数:</strong></p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>cardInfoEntity</td> <td>CardInfoEntity</td> <td>卡片信息</td> </tr> <tr> <td>needUpdate</td> <td>boolean</td> <td>是否需要更新</td> </tr> </tbody> </table> <p><strong>返回值 : </strong></p> <p>该接口如果返回true,则用户自己消费该回调接口,不会走之后的流程,用户可以用bookId实现自己的逻辑;如果返回false,则继续之后的流程(播放更新书本语音和下载书本信息等)。</p> <h5>5.5.1 CardInfoEntity类</h5> <table> <thead> <tr> <th>属性</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>cardGroupSecurityId</td> <td>String</td> <td>卡片安全id(sdk2.0版本新增)</td> </tr> <tr> <td>groupId</td> <td>int</td> <td>卡片id</td> </tr> <tr> <td>modeld</td> <td>int</td> <td>模型Id</td> </tr> <tr> <td>groupName</td> <td>String</td> <td>卡片套牌名字</td> </tr> <tr> <td>resourceDownloadURL</td> <td>String</td> <td>资源URL</td> </tr> <tr> <td>thumbnailCoverImage</td> <td>String</td> <td>封面缩略图</td> </tr> <tr> <td>totalCards</td> <td>int</td> <td>套牌数量</td> </tr> </tbody> </table> <h4>5.6 onGetPageAudio</h4> <p>获取当前识别页的音频数据 <strong>参数:</strong></p> <table> <thead> <tr> <th>参数名</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>pageAudio</td> <td>PageAudio</td> <td>音频信息</td> </tr> </tbody> </table> <p><strong>返回值 : </strong></p> <p>该接口如果返回true,拦截播放 ,返回false 继续播放。</p> <h5>5.5.1 CardInfoEntity类</h5> <table> <thead> <tr> <th>属性</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>cardGroupSecurityId</td> <td>String</td> <td>卡片安全id(sdk2.0版本新增)</td> </tr> <tr> <td>groupId</td> <td>int</td> <td>卡片id</td> </tr> <tr> <td>modeld</td> <td>int</td> <td>模型Id</td> </tr> <tr> <td>groupName</td> <td>String</td> <td>卡片套牌名字</td> </tr> <tr> <td>resourceDownloadURL</td> <td>String</td> <td>资源URL</td> </tr> <tr> <td>thumbnailCoverImage</td> <td>String</td> <td>封面缩略图</td> </tr> <tr> <td>totalCards</td> <td>int</td> <td>套牌数量</td> </tr> </tbody> </table> <h3>6. 设置BookId</h3> <p>该接口适用于部分客户想不识别封面直接识别内页的需求。</p> <p><strong>接口名称:</strong></p> <pre><code class="language-java">public void setupBookId(int bookId)</code></pre> <p><strong>备注:</strong>sdk 2.0+的版本开放该接口;</p> <h3>7. 设置人为选择的BookId</h3> <p><strong>使用场景:</strong>用于解决相似书识别,用户选择书本的相关场景。例:识别到相似书时(如:英语上下册,封面就一个文字区别),App展示多本相似书给用户选择,当用户选择后(选择时需调用[设置版本](<a href="https://www.showdoc.com.cn/visiontalk/5672301930548172">https://www.showdoc.com.cn/visiontalk/5672301930548172</a> &quot;设置版本&quot;))即需要调用此接口确定用户选择的bookid。</p> <p><strong>接口名称:</strong></p> <pre><code class="language-java">public void setupManualBookId(int bookId)</code></pre> <p>当识别到封面时,可通过该接口忽略玩瞳的书本识别结果,并将用户实际阅读书本的ID返回给玩瞳。在确定用户使用哪一本书的情况下,调用该接口可以提高书本内页识别的准确性。该接口应该在识别到书本封面时调用。</p> <p><strong>入参:</strong> 书本(资源)ID。</p> <p><strong>备注:</strong>sdk 2.0+的版本开放该接口;</p> <h3>8. 翻页检测回调IStateDetectListener(部分2.15.8版本及之前版本为IStateDetectListenner)</h3> <p>该回调类用于监听翻页状态回调,接口类如下:</p> <pre><code class="language-java">public interface IStateDetectListener { public static final int DETECT_TYPE_SLIP = 1; //翻页 public static final int DETECT_TYPE_NOSLIP = 0; //静止 void onStateDetectResult(int type); }</code></pre>

页面列表

ITEM_HTML