| 功能描述 | 接口原型 | 功能描述 |
| 构造对象 | BarcodeDetector (Context context) | 构造对象实例。 |
| 码检测 | JSONObject detect(Frame frame, IVisionCallback cb) | 根据传入的图片得图片中码包含信息。 |
| 结果转换 | List<Barcode> convertResult(JSONObject object) | detect直接返回JSONObject结果, 可以通过convertResult()方法将其转换为Json对应的Java类结果。 |
| 加载引擎 | VisionStatus prepare() | 加载引擎,在detect方法中会自动调用此方法。 |
| 释放引擎 | VisionStatus release() | 释放引擎,在使用接口完毕后调用release方法释放资源。 |
传入一张包含清晰二维码的图像和回调接口;返回值为解析二维码/条码的JsonObject格式结果,JsonObject中的信息为图码中所包含的信息。
| 接口 | 参数类型 | 参数说明 |
| BarcodeDetector | Context | 传入应用上下文 |
| 接口 | 参数类型 | 参数说明 |
| detect | Frame | 图片数据,Frame目前支持封装Bitmap、文件路径形式给出的图片数据(小于2000万像素),后续会扩展支持bytebuffer形式的图片数据。 |
| IVisionCallback | 回调函数接口对象: |
1. 返回值:JsonObject,包含二维码/条码的检测结果 。
| 字段 | 是否必选 | 类型 | 结果说明 |
| resultCode | true | int | 返回码 |
| barcode | true | object | 码中包含的信息类型,根据具体类型内部成员包含不同格式的信息,详见返回值Barcode内部结构表。 |
| + contentTypes | true | int | 码类型,详细信息见返回值中码类型说明。 |
如:
- {
- "resultCode": 0,
- "barcode": "[{\"contentTypes\":[9],\"text\":{\"languageType\":1,\"text\":\"huawei BarcodeDemo\"}}]"
- }
| 接口 | 参数类型 | 参数说明 |
| convertResult | JSONObject | detect返回的Json结果 |
1. 返回值:List<Barcode>
返回传入图片中码的信息的Java对象列表,目前仅支持一个返回结果。
BarCode类,可使用BarCode.getContentType()方法获取二维码/条码的类型。详细码类型说明(也可以在Barcode类中引用到):
public static final int TYPE_UNKNOWN = 0;//未知的码类型。
public static final int TYPE_PHONE = 1;//包含电话信息的二维码。
public static final int TYPE_GEO_POINT = 2;//包含地理位置信息的二维码。
public static final int TYPE_URL = 3;//包含网址信息的二维码。
public static final int TYPE_EMAIL = 4;//包含邮件信息的二维码。
public static final int TYPE_CONTACT_INFO = 5;//包含联系人信息的二维码。
public static final int TYPE_SMS = 6;//包含短信信息的二维码。
public static final int TYPE_CALENDAR_EVENT = 7;//包含日程事件信息的二维码。
public static final int TYPE_WIFI = 8;//包含wifi信息的二维码。
public static final int TYPE_TEXT = 9;//包含文本信息的二维码。
public static final int TYPE_PRODUCT = 10;//包含商品信息的条码。
public static final int TYPE_ISBN = 11;//包含书籍ISBN信息的条码。
Barcode内部结构表:Barcode内部结构表。
对于能够识别的码,解析结果中将包含该码信息的结构化文本,程序正常终止并得到返回结果,其中结果返回为0。 结果码含义参考如下:
| 结果码 | 解释 |
| 0 | 成功 |
| -1 | 未知错误 |
| -2 | 不支持的功能或接口 |
| -3 | 内存分配失败或创建对象失败 |
| 101 | 失败 |
| 200 | 输入参数不合法 |
| 201 | 输入参数不合法(为空) |
| 210 | 输入参数合法 |
| 500 | 服务绑定异常 |
| 521 | 服务绑定异常断开 |
| 522 | 服务已连接 |
| 600 | 模型文件异常 |
| 601 | 模型文件不存在 |
| 602 | 模型加载失败 |
| 1001 | 神经网络处理单元错误 |
Barcode将包含该码信息的Java对象。对于不能识别的码、不支持的码类型,解析结果中contentTypes返回值为0,Barcode结果为null。
当输入图片大小超过2000万像素时,会得到输入非法的错误码。将图像缩放后传入会有更高的效率与更低的内存。
HUAWEI HiAI Engine支持多用户同时接入,但是不支持同一用户启用多个线程,调用同一个特性,同一个用户的不同线程之间会相互影响。如,线程1启动引擎正在进行码检测,而线程2调用release()方法则会将引擎释放,导致线程1的码检测出现错误。多用户则不受此影响。