麦子学院Android开发教程生成商品条形码实例.docx_第1页
麦子学院Android开发教程生成商品条形码实例.docx_第2页
麦子学院Android开发教程生成商品条形码实例.docx_第3页
麦子学院Android开发教程生成商品条形码实例.docx_第4页
麦子学院Android开发教程生成商品条形码实例.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IT在线教育平台麦子学院下面来看一篇关于Android生成商品条形码的例子,这个生成是利用了EAN-13方式来生成了,代码与生成例子都在文章下面有大家可测试一下。简介商品条码,或者EAN是欧洲标准条码。该条码被作为商品和商品制造商的唯一标识,同时,是美国标准UPC的超集。EAN-13由前十二位数字和第十三位作为校验位的数字组成。其中第十三位数字由前十二位数字按照一定公式计算得出。如今,各个领域都有条码的应用。如果你以写代码为生,你的程序需要支持条码是早晚的事儿。比如超市的会员打折系统,用户以手机获取的条码作为唯一标识,来获得折扣。又比如支付系统中的星巴克支付系统。本文中,我们将讨论如何在安卓系统中生成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 RRRRRR4 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 0000101 10100007 0111011 0010001 10001008 0110111 0001001 10010009 0001011 0010111 1110100应用文章尾部,我贴出了一个用十二位数字生成EAN-13条码的类EAN13CodeBuilder。这个类可以把生成的十三位数字的每一位都替换为可以展示到屏幕的特殊字体。该字体包括了一些特殊字符,比如$,+,!和其如上所述的十个数字的编码L,R,G。在EAN-13条码必须以以下方式生成:起始界定符(取决于第一位数字)-左六位-中间分隔符-右六位-终止符(!)Digit L - code G - code R -code Start delimiter0 0 A a #!1 1 B b $!2 2 C c %!3 3 D d &!4 4 E e !5 5 F f (!6 6 G g )!7 7 H h *!8 8 I i +!9 9 J j ,!我们需要做的,仅仅是用数字生成正确的字符串,并用特殊字体展示而已。这个类的使用非常简单。它将原始字符串传递给构造函数,之后调用getcode()方法取回EAN-13条码。这个类的源代码如下: 代码如下复制代码public class EAN13CodeBuilder private String codeStringValue; private String generatedCode; /url : public EAN13CodeBuilder(String codeString) codeStringValue = codeString; parse(); public String getCode() return generatedCode; / / this method generates EAN 13 control number ans returns full / string to encode 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+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).intValue(); String retVal = letters.substring(position,position+1); 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 method generates EAN 13 encoded string / algorithm can be found at /wiki/EAN-13 private String createEAN13Code(String rawCode) int firstFlag = Integer.valueOf( rawCode.substring(0,1) ).intValue(); String leftString = rawCode.substring(1,7); String rightString = rawCode.substring(7); String rightCode = ; 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) +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 ) 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 = &!+leftString.substring(0,1) +leftString.substring(1,2) +DigitToUpperCase(leftString.substring(2,3) +DigitToUpperCase(leftString.substring(3,4) +DigitToUpperCase(leftString.substring(4,5) +leftString.substring(5); if( firstFlag = 4 ) leftCode = !+leftString.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) +DigitToUpperCase(leftString.substring(2,3) +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,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) +DigitToUpperCase(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); if( 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; private void parse() String fullString = getFullCode(); System.out.println( Full code: + fullString ); generatedCode = createEAN13Code(fullString); System.out.println( Generated code: + generatedCode ); 代码为了生成一个在线条码,并将它展示到安卓屏幕上,你可能需要自己生成条码并用其中的特殊字符展示到屏幕上。为了在安卓系统的TextView 部件中设置字符集,你需要在工程文件的 /assets 下放置一个文件,加载Typeface 并且设置Typeface 到TextView 中: 代码如下复制代码import android.app.Activity;import android.os.Bundle; import android.view.View

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论