android– 从扫描的GS1类型条形码中提取信息

android– 从扫描的GS1类型条形码中提取信息,第1张

概述我正在AndroidStudio上开发一个应用程序,以便在扫描条形码时获取项目的到期日期.我不希望用户单独安装ZXing条形码应用程序,因此我将ZXing代码嵌入到我的项目中.这样做我就能获得产品标识符.我还想使用扫描的条形码数据获取产品信息,例如描述,制造商和有效期.我怎样才能做到这一

我正在Android Studio上开发一个应用程序,以便在扫描条形码时获取项目的到期日期.

我不希望用户单独安装ZXing条形码应用程序,因此我将ZXing代码嵌入到我的项目中.这样做我就能获得产品标识符.

我还想使用扫描的条形码数据获取产品信息,例如描述,制造商和有效期.我怎样才能做到这一点?

解决方法:

获得由GS1类型条形码表示的信息涉及两个过程,该条形码以GS1应用标识符标准格式存储数据.

>提取通过扫描符号获得的GS1结构数据中包含的数据字段(称为应用标识符).这总是包括称为GTIN-14的项目的唯一标识符,并且可以包括补充信息,例如有效期,LOT号等.
此过程可以由独立应用程序执行.
>在数据库中查找提取的GTIN,无论是在应用程序本地还是通过某些公共API,都可以提供原产国,制造商和项目描述的文本表示.
要全面执行此过程,应用程序需要访问外部资源.

背景:GS1应用标识符标准格式组成

GS1格式的数据由应用程序标识符(AI)和值的连接列表组成,从表示GTIN的AI(01)开始.

例如,数据“(01)95012345678903(10)000123(17)150801”表示以下信息:

GTIN:             95012345678903BATCH/LOT:        000123USE BY OR EXPIRY: 1st August 2015

第3节:GS1应用程序标识符GS1 General Specifications的定义提供了每个应用程序标识符的含义,并且重要的是还说明了AI值是按定义变长还是固定长度,在这种情况下提供了强制长度.

GS1条形码使用特殊的非数据字符(FNC1)来指示数据符合GS1应用标识符标准格式,并分隔来自下一个AI的可变长度数据字段的结尾.例如,上述数据可以用代码128符号编码为{FNC1} 019501234567890310000123 {FNC1} 17150801,以产生以下GS1-128符号:

当条形码扫描仪读取此符号时,其解码如下[†]:

019501234567890310000123{GS}17150801

请注意,已丢弃初始FNC1非数据字符,并且可变长度AI分隔符角色中使用的FNC1已由GS字符(ASCII值29)表示.

提取(和可选的验证)

可以直接通过您的应用程序提取GTIN和任何补充信息.

要从条形码扫描器中解码的GS1符号数据中提取原始应用程序标识符数据,需要您的应用程序包含一个数据结构,我们将其称为AI-table将AI模式映射到其值的长度,该值来自于与上述相关的GS1一般规范部分:

AI     | N (value length)-------------------------(00)   | 18(01)   | 14(10)   | variable(17)   | 6(240)  | variable(310n) | 6(37)   | variable...

有了这个,您可以从扫描的条形码数据中提取AI值,如下所示:

while more data:    AI,N = Entry from AI-table matching a prefix of the data, otherwise FAIL.    if N is fixed-length:        VALUE = next N characters    else N is variable length:        VALUE = characters until "GS" or end of data    emit: (AI) VALUE

实际上,您可以选择在AI-table中包含更多来自通用规范的数据,以允许您的应用程序对每个VALUE的类型和长度进行增强验证.但是,上述内容足以提取给定数据,例如表示您要查找的失效日期的AI(17).

抬头

要获取您感兴趣的剩余数据(不是直接编码在条形码中),例如项目的名称和制造商详细信息,您需要使用外部资源(如本地产品数据库或其中一个公共资源)查找提取的GTIN.可用的UPC数据库API.

GTIN本身包含一个原产国(实际上它代表制造商注册的国家GS1成员组织,因此不是原产国),制造商标识符 – 这些被称为GS1前缀,可变长度和由GS1分配 – 其余数字代表制造商自由分配的产品代码.

给定GTIN,一些UPC数据库将仅提供与GS1前缀相关的详细信息,例如GS1成员组织和制造商的文本表示.其他人试图保留对普通项目的单独GTIN分配的记录,但是这些数据总是有些不完整和过时,因为没有强制实时GTIN分配注册.

this question的答案提供了一些免费产品信息平台的例子.

[†]实际上您可能会看到] C1019501234567890310000123 {GS} 17150801,在这种情况下,可以丢弃GS1-128] C1的主要符号系统标识符.

总结

以上是内存溢出为你收集整理的android – 从扫描的GS1类型条形码中提取信息全部内容,希望文章能够帮你解决android – 从扫描的GS1类型条形码中提取信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1103163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存