通讯框架
<h1>1.APK与外部应用(H5,后台服务)数据交换:</h1>
<h2>1.1.接口方式</h2>
<p>JS:
输入:JS调用APK统一接口ioHardware,传入数据输入协议。
输出:APK将数据通过JS回调函数callback向H5页面传送数据输出协议
TCP:
输入:APK接收后台TCP数据,传入数据输入协议。
接收:APK将数据通过TCP向后台传送数据输出协议。</p>
<h2>1.2.内容协议格式</h2>
<p>输入协议:</p>
<table>
<thead>
<tr>
<th style="text-align: left;">字段</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">空</th>
<th>默认</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">id</td>
<td style="text-align: left;">varchar(64)</td>
<td style="text-align: left;">否</td>
<td></td>
<td>每次调用标识(JS:js+随机数,TCP:tcp+随机数)</td>
</tr>
<tr>
<td style="text-align: left;">device_id</td>
<td style="text-align: left;">varchar(20)</td>
<td style="text-align: left;">是</td>
<td></td>
<td>播放终端设备ID (JS调用可为空)</td>
</tr>
<tr>
<td style="text-align: left;">module</td>
<td style="text-align: left;">varchar(50)</td>
<td style="text-align: left;">否</td>
<td></td>
<td>外部设备类型</td>
</tr>
<tr>
<td style="text-align: left;">function</td>
<td style="text-align: left;">varchar(20)</td>
<td style="text-align: left;">否</td>
<td></td>
<td>处理函数</td>
</tr>
<tr>
<td style="text-align: left;">callback</td>
<td style="text-align: left;">varchar(20)</td>
<td style="text-align: left;">是</td>
<td></td>
<td>回调函数(JS:可选, TCP:空)</td>
</tr>
<tr>
<td style="text-align: left;">params</td>
<td style="text-align: left;">map</td>
<td style="text-align: left;">否</td>
<td></td>
<td>参数</td>
</tr>
</tbody>
</table>
<p>示例:
{
"id": "tcp1234567",
"device_id": "b9a19025e495400c8234331c8e7962c2",
"module": "IO",
"function ": "openPower",
"callback": "onOpenPower",
"params": { "param1": "1", "param2": "2", "param3": "3"
}
}</p>
<p>输出协议:</p>
<table>
<thead>
<tr>
<th style="text-align: left;">字段</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">空</th>
<th>默认</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">code</td>
<td style="text-align: left;">int</td>
<td style="text-align: left;">否</td>
<td></td>
<td>-1 失败,0 成功</td>
</tr>
<tr>
<td style="text-align: left;">msg</td>
<td style="text-align: left;">varchar(200)</td>
<td style="text-align: left;">否</td>
<td></td>
<td>失败,返回失败提示</td>
</tr>
<tr>
<td style="text-align: left;">device_id</td>
<td style="text-align: left;">varchar(20)</td>
<td style="text-align: left;">否</td>
<td></td>
<td>播放终端设备ID</td>
</tr>
<tr>
<td style="text-align: left;">module</td>
<td style="text-align: left;">varchar(50)</td>
<td style="text-align: left;">否</td>
<td></td>
<td>外部设备类型</td>
</tr>
<tr>
<td style="text-align: left;">function</td>
<td style="text-align: left;">varchar(20)</td>
<td style="text-align: left;">否</td>
<td></td>
<td>处理函数</td>
</tr>
<tr>
<td style="text-align: left;">results</td>
<td style="text-align: left;">map</td>
<td style="text-align: left;">否</td>
<td></td>
<td>返回值列表</td>
</tr>
</tbody>
</table>
<h2>1.3.TCP接口</h2>
<h3>1.3.1.发送接口</h3>
<h5>说明</h5>
<p>用户调用后台接口,通过TCP与APK进行信息交换,</p>
<h5>请求URL</h5>
<p><a href="http://localhost:7999/mips/player/sendexternal">http://localhost:7999/mips/player/sendexternal</a></p>
<h5>请求方式</h5>
<ul>
<li>POST
<h5>参数</h5></li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">-protocol</td>
<td style="text-align: left;">varchar(2000)</td>
<td style="text-align: left;">否</td>
<td>协议内容(输入协议JSON)</td>
</tr>
</tbody>
</table>
<h3>1.3.2.回调接口</h3>
<h5>说明:</h5>
<p>Apk通过TCP将结果返回到后台,后台回调外部应用接口,将数据推送给外部应用,外部应用实现/revexternal。</p>
<h5>请求URL</h5>
<p>/revexternal</p>
<h5>请求方式</h5>
<ul>
<li>POST
<h5>参数</h5></li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">-protocol</td>
<td style="text-align: left;">varchar(max)</td>
<td style="text-align: left;">否</td>
<td>协议内容(输出协议JSON)</td>
</tr>
</tbody>
</table>
<h1>2.APK相关外部设备数据交换</h1>
<pre><code>设备集成方式 :
1)发送调用由外部应用指定设备类型,方法和参数,如果需要结果,需要设置回调函数。
2)根据设备类型来确定外部设备的集成方式,相同设备类型型号不同可能采用不同的集成方式
3)集成外部设备时,提供集成设备的协议文档给外部应用程序</code></pre>
<table>
<thead>
<tr>
<th style="text-align: left;">设备类型</th>
<th style="text-align: left;">设备名称</th>
<th style="text-align: left;">设备型号</th>
<th style="text-align: left;">集成方式</th>
<th>备注</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">韦根卡</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输入/输出</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输入/输出</td>
</tr>
<tr>
<td style="text-align: left;">身份证读卡器</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入/输出</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入/输出</td>
</tr>
<tr>
<td style="text-align: left;">二维码</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输入/输出</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入/输出</td>
</tr>
<tr>
<td style="text-align: left;">护照阅读器</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输入/输出</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入/输出</td>
</tr>
<tr>
<td style="text-align: left;">就诊卡</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入/输出</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入/输出</td>
</tr>
<tr>
<td style="text-align: left;">摄像头</td>
<td style="text-align: left;">camera</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输入/输出</td>
</tr>
<tr>
<td style="text-align: left;">IO输出(灯光控制)</td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输出</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输出</td>
</tr>
<tr>
<td style="text-align: left;">声音</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输出</td>
</tr>
<tr>
<td style="text-align: left;">打印机</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输出</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输出</td>
</tr>
<tr>
<td style="text-align: left;">发卡机</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输入</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入</td>
</tr>
<tr>
<td style="text-align: left;">IC卡读卡器</td>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td>输入</td>
</tr>
<tr>
<td style="text-align: left;"></td>
<td style="text-align: left;"></td>
<td style="text-align: left;">USB+SDK</td>
<td style="text-align: left;">输入</td>
</tr>
</tbody>
</table>