收藏 分享(赏)

麦子学院Android开发教程生成商品条形码实例.docx

上传人:nacm35 文档编号:6983359 上传时间:2019-04-29 格式:DOCX 页数:11 大小:18.04KB
下载 相关 举报
麦子学院Android开发教程生成商品条形码实例.docx_第1页
第1页 / 共11页
麦子学院Android开发教程生成商品条形码实例.docx_第2页
第2页 / 共11页
麦子学院Android开发教程生成商品条形码实例.docx_第3页
第3页 / 共11页
麦子学院Android开发教程生成商品条形码实例.docx_第4页
第4页 / 共11页
麦子学院Android开发教程生成商品条形码实例.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、IT 在线教育平台麦子学院 http:/下面来看一篇关于 Android 生成商品条形码的例子,这个生成是利用了 EAN-13 方式来生成了,代码与生成例子都在文章下面有大家可测试一下。简介商品条码,或者 EAN 是欧洲标准条码。该条码被作为商品和商品制造商的唯一标识,同时,是美国标准 UPC 的超集。EAN-13 由前十二位数字和第十三位作为校验位的数字组成。其中第十三位数字由前十二位数字按照一定公式计算得出。如今,各个领域都有条码的应用。如果你以写代码为生,你的程序需要支持条码是早晚的事儿。比如超市的会员打折系统,用户以手机获取的条码作为唯一标识,来获得折扣。又比如支付系统中的星巴克支付系

2、统。本文中,我们将讨论如何在安卓系统中生成 EAN-13 条码。EAN-13 计算基础EAN-13 采用的是是各位商品码,第十三位作为校验位。该校验位有前十二位数字生成。生成校验位的算法如下(数据从左到右计数):P1 = 偶数位的数字和P2 = 奇数位的数字和Z = P1 + 3 * P2R = 取个位数作为 Z 值校验位 = R - Z下面我们看一下 EAN-13 的编码结构 :首位不参与计算随后六位根据首位数字编码末六位以下列规则转换首位 左六位 右六位0 LLLLLL RRRRRR1 LLGLGG RRRRRR2 LLGGLG RRRRRR3 LLGGGL RRRRRRIT 在线教育平台

3、麦子学院 http:/4 LGLLGG RRRRRR5 LGGLLG RRRRRR6 LGGGLL RRRRRR7 LGLGLG RRRRRR8 LGLGGL RRRRRR9 LGGLGL RRRRRR位编码:Digit L - code G - code R - code0 0001101 0100111 11100101 0011001 0110011 11001102 0010011 0011011 11011003 0111101 0100001 10000104 0100011 0011101 10111005 0110001 0111001 10011106 0101111 000

4、0101 10100007 0111011 0010001 10001008 0110111 0001001 10010009 0001011 0010111 1110100应用文章尾部,我贴出了一个用十二位数字生成 EAN-13 条码的类 EAN13CodeBuilder。这个类可以把生成的十三位数字的每一位都替换为可以展示到屏幕的特殊字体。该字体包括了一些特殊字符,比如$,+,!和其如上所述的十个数字的编码 L,R,G。在 EAN-13 条码必须以以下方式生成:起始界定符(取决于第一位数字)-左六位-中间分隔符-右六位-终止符(!)Digit L - code G - code R -co

5、de Start delimiter0 0 A a #!1 1 B b $!2 2 C c %!3 3 D d private String generatedCode;/url : http:/ public EAN13CodeBuilder(String codeString)codeStringValue = codeString;parse();public String getCode()return generatedCode;/ this method generates EAN 13 control number ans returns full / string to enc

6、odeIT 在线教育平台麦子学院 http:/private String getFullCode()int chetVal = 0, nechetVal = 0;String codeToParse = codeStringValue;for( int index = 0;index6;index+ )chetVal += Integer.valueOf(codeToParse.substring(index*2+1,index*2+2).intValue();nechetVal += Integer.valueOf(codeToParse.substring(index*2,index*2

7、+1).intValue();chetVal *= 3;int controlNumber = 10 - (chetVal+nechetVal)%10;if( controlNumber = 10 ) controlNumber = 0;codeToParse += String.valueOf(controlNumber);return codeToParse;private String DigitToUpperCase( String digit)String letters = “ABCDEFGHIJ“;int position = Integer.valueOf(digit).int

8、Value();String retVal = letters.substring(position,position+1);IT 在线教育平台麦子学院 http:/return retVal;private String DigitToLowerCase( String digit)String letters = “abcdefghij“;int position = Integer.valueOf(digit).intValue();String retVal = letters.substring(position,position+1);return retVal;/ this me

9、thod generates EAN 13 encoded string/ algorithm can be found at http:/en.wikipedia.org/wiki/EAN-13private String createEAN13Code(String rawCode)int firstFlag = Integer.valueOf(rawCode.substring(0,1).intValue();String leftString = rawCode.substring(1,7);String rightString = rawCode.substring(7);Strin

10、g rightCode = “;IT 在线教育平台麦子学院 http:/String leftCode = “;for( int i=0;i6;i+)rightCode += DigitToLowerCase( rightString.substring(i,i+1) );if( firstFlag = 0 )leftCode = “#!“+leftString.substring(0,1)+leftString.substring(1,2)+leftString.substring(2,3)+leftString.substring(3,4)+leftString.substring(4,5

11、)+leftString.substring(5);if( firstFlag = 1 )leftCode = “$!“+leftString.substring(0,1)+leftString.substring(1,2)+DigitToUpperCase(leftString.substring(2,3)+leftString.substring(3,4)+DigitToUpperCase(leftString.substring(4,5)+DigitToUpperCase(leftString.substring(5);if( firstFlag = 2 )IT 在线教育平台麦子学院 h

12、ttp:/leftCode = “%!“+leftString.substring(0,1)+leftString.substring(1,2)+DigitToUpperCase(leftString.substring(2,3)+DigitToUpperCase(leftString.substring(3,4)+leftString.substring(4,5)+DigitToUpperCase(leftString.substring(5);if( firstFlag = 3 )leftCode = “if( firstFlag = 4 )leftCode = “!“+leftStrin

13、g.substring(0,1)+DigitToUpperCase(leftString.substring(1,2)+leftString.substring(2,3)+leftString.substring(3,4)+DigitToUpperCase(leftString.substring(4,5)+DigitToUpperCase(leftString.substring(5);if( firstFlag = 5 )leftCode = “(!“+leftString.substring(0,1)+DigitToUpperCase(leftString.substring(1,2)+

14、DigitToUpperCase(leftString.substring(2,3)IT 在线教育平台麦子学院 http:/+leftString.substring(3,4)+leftString.substring(4,5)+DigitToUpperCase(leftString.substring(5);if( firstFlag = 6 )leftCode = “)!“+leftString.substring(0,1)+DigitToUpperCase(leftString.substring(1,2)+DigitToUpperCase(leftString.substring(2,

15、3)+DigitToUpperCase(leftString.substring(3,4)+leftString.substring(4,5)+leftString.substring(5);if( firstFlag = 7 )leftCode = “*!“+leftString.substring(0,1)+DigitToUpperCase(leftString.substring(1,2)+leftString.substring(2,3)+DigitToUpperCase(leftString.substring(3,4)+leftString.substring(4,5)+Digit

16、ToUpperCase(leftString.substring(5);if( firstFlag = 8 )leftCode = “+!“+leftString.substring(0,1)+DigitToUpperCase(leftString.substring(1,2)+leftString.substring(2,3)+DigitToUpperCase(leftString.substring(3,4)+DigitToUpperCase(leftString.substring(4,5)+leftString.substring(5);IT 在线教育平台麦子学院 http:/if(

17、firstFlag = 9 )leftCode = “,!“+leftString.substring(0,1)+DigitToUpperCase(leftString.substring(1,2)+DigitToUpperCase(leftString.substring(2,3)+leftString.substring(3,4)+DigitToUpperCase(leftString.substring(4,5)+leftString.substring(5);String retVal = leftCode + “-“ + rightCode + “!“;return retVal;p

18、rivate void parse()String fullString = getFullCode();System.out.println( “Full code: “ + fullString );generatedCode = createEAN13Code(fullString);System.out.println( “Generated code: “ + generatedCode );代码IT 在线教育平台麦子学院 http:/为了生成一个在线条码,并将它展示到安卓屏幕上,你可能需要自己生成条码并用其中的特殊字符展示到屏幕上。为了在安卓系统的 TextView 部件中设置字符

19、集,你需要在工程文件的 /assets 下放置一个文件,加载 Typeface 并且设置 Typeface 到TextView 中:代码如下 复制代码import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.graphics.Typeface;public class AndroidEAN13Activity extends Activity /* Called when the activity is f

20、irst created. */Overridepublic void onCreate(Bundle icicle) super.onCreate(icicle);/ ToDo add your GUI initialization code herethis.setContentView(R.layout.main);TextView t = (TextView)findViewById(R.id.barcode);/ set barcode font for TextView./ ttf file must be placed is assets/fonts Typeface font = Typeface.createFromAsset(this.getAssets(), “fonts/EanP72Tt Normal.Ttf“);t.setTypeface(font);/ generate barcode string IT 在线教育平台麦子学院 http:/EAN13CodeBuilder bb = new EAN13CodeBuilder(“124958761310“);t.setText(bb.getCode();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报