预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

IT在线教育平台——麦子学院http://www.maiziedu.com 下面来看一篇关于Android生成商品条形码的例子,这个生成是利用了EAN-13方式来生成了,代码与生成例子都在文章下面有大家可测试一下。 简介 商品条码,或者EAN是欧洲标准条码。该条码被作为商品和商品制造商的唯一标识,同时,是美国标准UPC的超集。EAN-13由前十二位数字和第十三位作为校验位的数字组成。其中第十三位数字由前十二位数字按照一定公式计算得出。 如今,各个领域都有条码的应用。如果你以写代码为生,你的程序需要支持条码是早晚的事儿。比如超市的会员打折系统,用户以手机获取的条码作为唯一标识,来获得折扣。又比如支付系统中的星巴克支付系统。本文中,我们将讨论如何在安卓系统中生成EAN-13条码。 EAN-13计算基础 EAN-13采用的是是各位商品码,第十三位作为校验位。该校验位有前十二位数字生成。生成校验位的算法如下(数据从左到右计数): P1=偶数位的数字和 P2=奇数位的数字和 Z=P1+3*P2 R=取个位数作为Z值 校验位=R-Z 下面我们看一下EAN-13的编码结构: 首位不参与计算 随后六位根据首位数字编码 末六位以下列规则转换 首位左六位右六位 0LLLLLLRRRRRR 1LLGLGGRRRRRR 2LLGGLGRRRRRR 3LLGGGLRRRRRR 4LGLLGGRRRRRR 5LGGLLGRRRRRR 6LGGGLLRRRRRR 7LGLGLGRRRRRR 8LGLGGLRRRRRR 9LGGLGLRRRRRR 位编码: DigitL-codeG-codeR-code 0000110101001111110010 1001100101100111100110 2001001100110111101100 3011110101000011000010 4010001100111011011100 5011000101110011001110 6010111100001011010000 7011101100100011000100 8011011100010011001000 9000101100101111110100 应用 文章尾部,我贴出了一个用十二位数字生成EAN-13条码的类EAN13CodeBuilder。这个类可以把生成的十三位数字的每一位都替换为可以展示到屏幕的特殊字体。该字体包括了一些特殊字符,比如$,+,!和其如上所述的十个数字的编码L,R,G。在EAN-13条码必须以以下方式生成:起始界定符(取决于第一位数字)-左六位-中间分隔符-右六位-终止符(!) DigitL-codeG-codeR-codeStartdelimiter 00Aa#! 11Bb$! 22Cc%! 33Dd&! 44Ee'! 55Ff(! 66Gg)! 77Hh*! 88Ii+! 99Jj,! 我们需要做的,仅仅是用数字生成正确的字符串,并用特殊字体展示而已。 这个类的使用非常简单。它将原始字符串传递给构造函数,之后调用getcode()方法取回EAN-13条码。这个类的源代码如下: 代码如下 复制代码 publicclassEAN13CodeBuilder{ privateStringcodeStringValue; privateStringgeneratedCode; //url:{http://www.maiziedu.com} publicEAN13CodeBuilder(StringcodeString) { codeStringValue=codeString; parse(); } publicStringgetCode() { returngeneratedCode; } //////////////////////////////////////////////////////////////// //thismethodgeneratesEAN13controlnumberansreturnsfull //stringtoencode privateStringgetFullCode() { intchetVal=0,nechetVal=0; StringcodeToParse=codeStringValue; for(intindex=0;index<6;index++) { chetVal+=Integer.valueOf(codeToParse.substring( index*2+1,index*2+2)).intValue(); nechetVal+=Integer.valueOf(codeToParse.substring( index*2,index*2+1)).intValue()