1. 接口定义

功能描述接口原型功能描述
构造对象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方法释放资源。

2. 接口描述

传入一张包含清晰二维码的图像和回调接口;返回值为解析二维码/条码的JsonObject格式结果,JsonObject中的信息为图码中所包含的信息。

3. 参数说明

3.1 构造对象

接口 参数类型参数说明 
BarcodeDetectorContext传入应用上下文

3.2 码检测

接口 参数类型参数说明 
detect Frame图片数据,Frame目前支持封装Bitmap、文件路径形式给出的图片数据(小于2000万像素),后续会扩展支持bytebuffer形式的图片数据。
IVisionCallback

回调函数接口对象:
1. 传入null,表示同步处理。
2. 传入非null,即回调函数接口对象,表示异步处理,用于异步返回结果。
目前暂不支持异步处理。

1. 返回值:JsonObject,包含二维码/条码的检测结果 。

字段是否必选类型结果说明
resultCodetrueint返回码
barcodetrueobject码中包含的信息类型,根据具体类型内部成员包含不同格式的信息,详见返回值Barcode内部结构表。
+ contentTypestrue

int

码类型,详细信息见返回值中码类型说明。

如:

  1. {
  2.    "resultCode": 0,
  3.    "barcode": "[{\"contentTypes\":[9],\"text\":{\"languageType\":1,\"text\":\"huawei BarcodeDemo\"}}]"
  4. }

3.3 结果转换

接口 参数类型参数说明 
convertResult JSONObject detect返回的Json结果 

1. 返回值:List<Barcode>

返回传入图片中码的信息的Java对象列表,目前仅支持一个返回结果。

3.4 返回值

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内部结构表。

4. 常见返回码

对于能够识别的码,解析结果中将包含该码信息的结构化文本,程序正常终止并得到返回结果,其中结果返回为0。 结果码含义参考如下:

结果码解释
0成功
-1未知错误
-2不支持的功能或接口
-3内存分配失败或创建对象失败
101失败
200输入参数不合法
201输入参数不合法(为空)
210输入参数合法
500服务绑定异常
521服务绑定异常断开
522服务已连接
600模型文件异常
601模型文件不存在
602模型加载失败
1001神经网络处理单元错误

Barcode将包含该码信息的Java对象。对于不能识别的码、不支持的码类型,解析结果中contentTypes返回值为0,Barcode结果为null。

注意:
当使用摄像头进行扫码时,可能出现用户没有对准图码、摄像头未对焦的情况,可能多次返回contentTypes为0的结果,需要对该结果进行丢弃,并从新采样摄像头图片进行识别。

5. 限制与约束

5.1 输入图片大小

当输入图片大小超过2000万像素时,会得到输入非法的错误码。将图像缩放后传入会有更高的效率与更低的内存。

5.2 多线程调用

HUAWEI HiAI Engine支持多用户同时接入,但是不支持同一用户启用多个线程,调用同一个特性,同一个用户的不同线程之间会相互影响。如,线程1启动引擎正在进行码检测,而线程2调用release()方法则会将引擎释放,导致线程1的码检测出现错误。多用户则不受此影响。