001/*
002 * ===========================================================================================
003 * = COPYRIGHT
004 *          PAX Computer Technology (Shenzhen) Co., Ltd. PROPRIETARY INFORMATION
005 *   This software is supplied under the terms of a license agreement or nondisclosure
006 *   agreement with PAX Computer Technology (Shenzhen) Co., Ltd. and may not be copied or
007 *   disclosed except in accordance with the terms in that agreement.
008 *     Copyright (C) 2017-2023 PAX Computer Technology (Shenzhen) Co., Ltd. All rights reserved.
009 * Description: // Detail description about the function of this module,
010 *             // interfaces with the other modules, and dependencies.
011 * Revision History:
012 * Date                         Author                        Action
013 * 2017/04/01                   PAX                     Create/Add/Modify/Delete
014 * ===========================================================================================
015 */
016 
017package com.pax.dal;
018
019import com.pax.dal.entity.DecodeResult;
020import com.pax.dal.entity.DecodeResultRaw;
021
022import android.content.Context;
023
024/**
025 * <div class="zh">必须要添加权限:android.permission.READ_PHONE_STATE,android.permission.INTERNET和android.permission.ACCESS_WIFI_STATE</div>
026 * <div class="en">Permissions must be added:android.permission.READ_PHONE_STATE,android.permission.INTERNET and android.permission.ACCESS_WIFI_STATE</div>
027 * @since V2.02.00
028 * @author Uni.W
029 */
030public interface IScanCodec {
031
032    /**
033     * <div class="zh"> 禁止扫描类型 </div> <div class="en"> disable scanner format </div>
034     * 
035     * @param format
036     *            <div class="zh">条码类型
037     *            <ul>
038     *            <li>1: CODEC_UPC</li>
039     *            <li>2: CODEC_C39</li>
040     *            <li>3: CODEC_C128</li>
041     *            <li>4: CODEC_I25</li>
042     *            <li>5: CODEC_C93</li>
043     *            <li>6: CODEC_GS1_DATABAR</li>
044     *            <li>7: CODEC_MSI</li>
045     *            <li>8: CODEC_CODEBLOCK_F</li>
046     *            <li>9: CODEC_PDF417</li>
047     *            <li>10: CODEC_MICROPDF</li>
048     *            <li>11: CODEC_MAXICODE</li>
049     *            <li>12: CODEC_QRCODE</li>
050     *            <li>13: CODEC_DATAMATRIX</li>
051     *            <li>14: CODEC_AZTEC</li>
052     *            <li>15: CODEC_HAXIN</li>
053     *            <li>16: CODEC_MATRIX</li>
054     *            <li>17: CODEC_TRIOPTIC</li>
055     *            <li>18: CODEC_STRAIGHT25</li>
056     *            <li>19: CODEC_TELEPEN</li>
057     *            <li>20: CODEC_C11</li>
058     *            <li>21: CODEC_NEC25</li>
059     *            <li>22: CODEC_CODABAR</li>
060     *            <li>23: CODEC_HK25</li>
061     *            <li>24: CODEC_POSTAL</li>
062     *            </ul>
063     *            </div> <div class="en"> scan format
064     *            <ul>
065     *            <li>1: CODEC_UPC</li>
066     *            <li>2: CODEC_C39</li>
067     *            <li>3: CODEC_C128</li>
068     *            <li>4: CODEC_I25</li>
069     *            <li>5: CODEC_C93</li>
070     *            <li>6: CODEC_GS1_DATABAR</li>
071     *            <li>7: CODEC_MSI</li>
072     *            <li>8: CODEC_CODEBLOCK_F</li>
073     *            <li>9: CODEC_PDF417</li>
074     *            <li>10: CODEC_MICROPDF</li>
075     *            <li>11: CODEC_MAXICODE</li>
076     *            <li>12: CODEC_QRCODE</li>
077     *            <li>13: CODEC_DATAMATRIX</li>
078     *            <li>14: CODEC_AZTEC</li>
079     *            <li>15: CODEC_HAXIN</li>
080     *            <li>16: CODEC_MATRIX</li>
081     *            <li>17: CODEC_TRIOPTIC</li>
082     *            <li>18: CODEC_STRAIGHT25</li>
083     *            <li>19: CODEC_TELEPEN</li>
084     *            <li>20: CODEC_C11</li>
085     *            <li>21: CODEC_NEC25</li>
086     *            <li>22: CODEC_CODABAR</li>
087     *            <li>23: CODEC_HK25</li>
088     *            <li>24: CODEC_POSTAL</li>
089     *            </ul>
090     *            </div>
091     */
092    void disableFormat(int format);
093
094    /**
095     * <div class="zh"> 使能扫描类型 </div> <div class="en"> enable scanner format </div>
096     * 
097     * @param format
098     *            <div class="zh">条码类型
099     *            <ul>
100     *            <li>1: CODEC_UPC</li>
101     *            <li>2: CODEC_C39</li>
102     *            <li>3: CODEC_C128</li>
103     *            <li>4: CODEC_I25</li>
104     *            <li>5: CODEC_C93</li>
105     *            <li>6: CODEC_GS1_DATABAR</li>
106     *            <li>7: CODEC_MSI</li>
107     *            <li>8: CODEC_CODEBLOCK_F</li>
108     *            <li>9: CODEC_PDF417</li>
109     *            <li>10: CODEC_MICROPDF</li>
110     *            <li>11: CODEC_MAXICODE</li>
111     *            <li>12: CODEC_QRCODE</li>
112     *            <li>13: CODEC_DATAMATRIX</li>
113     *            <li>14: CODEC_AZTEC</li>
114     *            <li>15: CODEC_HAXIN</li>
115     *            <li>16: CODEC_MATRIX</li>
116     *            <li>17: CODEC_TRIOPTIC</li>
117     *            <li>18: CODEC_STRAIGHT25</li>
118     *            <li>19: CODEC_TELEPEN</li>
119     *            <li>20: CODEC_C11</li>
120     *            <li>21: CODEC_NEC25</li>
121     *            <li>22: CODEC_CODABAR</li>
122     *            <li>23: CODEC_HK25</li>
123     *            <li>24: CODEC_POSTAL</li>
124     *            </ul>
125     *            </div> <div class="en"> scan format
126     *            <ul>
127     *            <li>1: CODEC_UPC</li>
128     *            <li>2: CODEC_C39</li>
129     *            <li>3: CODEC_C128</li>
130     *            <li>4: CODEC_I25</li>
131     *            <li>5: CODEC_C93</li>
132     *            <li>6: CODEC_GS1_DATABAR</li>
133     *            <li>7: CODEC_MSI</li>
134     *            <li>8: CODEC_CODEBLOCK_F</li>
135     *            <li>9: CODEC_PDF417</li>
136     *            <li>10: CODEC_MICROPDF</li>
137     *            <li>11: CODEC_MAXICODE</li>
138     *            <li>12: CODEC_QRCODE</li>
139     *            <li>13: CODEC_DATAMATRIX</li>
140     *            <li>14: CODEC_AZTEC</li>
141     *            <li>15: CODEC_HAXIN</li>
142     *            <li>16: CODEC_MATRIX</li>
143     *            <li>17: CODEC_TRIOPTIC</li>
144     *            <li>18: CODEC_STRAIGHT25</li>
145     *            <li>19: CODEC_TELEPEN</li>
146     *            <li>20: CODEC_C11</li>
147     *            <li>21: CODEC_NEC25</li>
148     *            <li>22: CODEC_CODABAR</li>
149     *            <li>23: CODEC_HK25</li>
150     *            <li>24: CODEC_POSTAL</li>
151     *            </ul>
152     *            </div>
153     */
154    void enableFormat(int format);
155
156    /**
157     * <div class="zh"> 初始化(目前只支持1280 * 720, 640 * 480, 480 * 640) </div> <div class="en"> init(only support 1280 * 720, 640 * 480, 480 * 640)
158     * </div>
159     * 
160     * @param context
161     *            <div class="zh"> 上下文 </div> <div class="en"> contex </div>
162     * @param width
163     *            <div class="zh"> 图像宽度 </div> <div class="en"> width </div>
164     * @param height
165     *            <div class="zh"> 图像高度 </div> <div class="en"> height </div>
166     */
167    void init(Context context, int width, int height);
168
169    /**
170     * <div class="zh"> 扫描解码 </div> <div class="en"> scanner decode </div>
171     * 
172     * @param data
173     *            <div class="zh"> 需要解码的原始数据 </div> <div class="en"> original data that needs to be decoded </div>
174     * @return <div class="zh"> 解码结果{@link DecodeResult},返回null代表不支持 </div> <div class="en"> Decoding results
175     *         {@link DecodeResult}, return null mean not support. </div>
176     */
177    DecodeResult decode(byte[] data);
178    /**
179     * <div class="zh"> 扫描解码 </div> <div class="en"> scanner decode </div>
180     * 
181     * @param data
182     *            <div class="zh"> 需要解码的原始数据 </div> <div class="en"> original data that needs to be decoded </div>
183     * @return <div class="zh"> 解码后的原始结果{@link DecodeResultRaw},返回null代表不支持 </div> <div class="en"> raw decoding results
184     *         {@link DecodeResultRaw}, return null mean not support. </div>
185     */
186    DecodeResultRaw decodeRaw(byte[] data); 
187    
188    /**
189     * <div class="zh"> 扫描解码 </div> <div class="en"> scanner decode </div>
190     * 
191     * @param data
192     *            <div class="zh"> 需要解码的原始数据 </div> <div class="en"> original data that needs to be decoded </div>
193     * @param timeout 
194     *              <div class="zh"> 超时时间 。大于等于500。单位:毫秒。</div> <div class="en"> Timeout. 500 or more. Unit: Millisecond.</div>
195     * @return <div class="zh"> 解码后的原始结果{@link DecodeResultRaw},返回null代表不支持 </div> <div class="en"> raw decoding results
196     *         {@link DecodeResultRaw}, return null mean not support. </div>
197     */
198    DecodeResultRaw decodeRaw(byte[] data,long timeout);
199
200    /**
201     * <div class="zh">释放资源</div> <div class="en"> release </div>
202     */
203    void release();
204}