导航:首页 > 操作系统 > androidzxing生成条形码

androidzxing生成条形码

发布时间:2022-08-01 05:38:55

android开发:用浏览器调用zxing识别条码,然后将结果返回到浏览器特定的文本框里

建议你使用Android应用作为客户端,去访问网站里的应用,比如webapp的servlet。有两种方式:
1)使用JSON RPC 调用 servlet的方法;
2)使用HttpClient对象访问网站的URL。

⑵ Android二维码识别源码,可有多种实现方式

这里简单介绍一下ZXing库。ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码。目前支持以下格式:UPC-A,UPC-E、EAN-8,EAN-13、39码、93码。ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力。
下面是ZXing的demo运行,我这里创建了一个二维码,内容是我博客的网址,大伙可以用微信的扫一扫功能,试一下。就可以直接打开我博客。

2、ZXing库主要类
下面给大家介绍一下,ZXing库里面主要的类以及这些类的作用:
CaptureActivity。这个是启动Activity 也就是扫描器。
CaptureActivityHandler 解码处理类,负责调用另外的线程进行解码。
DecodeThread 解码的线程。
com.google.zxing.client.android.camera 包,摄像头控制包。
ViewfinderView 自定义的View,就是我们看见的拍摄时中间的框框了。

3、使用ZXing生成二维码
下面针对二维码生成和解析做个简单介绍,至于详细的使用方法,建议大家还是自己看看源码,使用起来很简单,不过这个开源项目的代码,值得好好看看。首先给出二维码生成的方法:
View Code
上面就是二维码生成的方法接口,如果你只是使用者方法,很简单,只要传入一个URL即可,就像我截图里面一样,传入一个合法的网址即可。或者像现在一些移动APP的推广,把APP下载地址转为二维码,只要扫一下就可以下载相应的APP。这个也是目前比较流行的APP的推广方式。
上面代码做的事情不多,主要是调用ZXing库里面QRCodeWriter().encode的方法对我们传进去的URL进行编码,具体如何编码,这个我这里就不详细说,有兴趣可以看ZXing的源码。文章最后会给出ZXing的源码和例子代码。

4、扫描二维码获取信息
扫描获取二维码信息的工作稍微复杂一些,主要是需要编写Camera的使用,这个跟我们一般使用Camera一样,需要使用Surfaceview作为预览,这一部我这里就不说了,这个应该不是太复杂。对于使用过Camera做预览的朋友,应该是挺简单的事情。获取二维码数据的关键处理是在Camera的自动对焦回调函数哪里,调用ZXing的解码接口。
View Code
这里稍微多说一句,由于解码需要一定时间,所以ZXing的解码调用,都是使用了Handler作为线程通信机制,解码的工作都是放在独立线程里面使用的,如果你直接在主线程解码,恐怕ANR问题是避免不了。
View Code
上面是解码的线程处理不同状态的时候需要注意的地方,我们这里只看获取图像成功的地方,成功获取图片解码的实在DecodeThread里面实现,DecodeThread里面解码成功后,会把数据序列化,然后保存到Bundle里面,我们可以直接通过Bundle的序列化,获取到图片数据。同时会把解码后的结果保存到MSG里面,然后就可以根据实际情况进行处理,例如上面代码,解码成功后,会调用一个处理函数:
View Code
上面就是整个二维码的解码流程,里面因为涉及很多Camera的使用,所以你如果需要使用二维码识别,需要注意一下你的程序需要申请下面的权限,一般的Camera使用以及Camera的自动对焦等。
View Code
5、结语
上面就是生成和识别二维码的关键流程和代码,有兴趣的朋友可以自己查看ZXing的源码,里面有很多图像分析的知识可以学习。具体使用也可以参考我下面给出的Demo。二维码对于现在移动开发来说很是很常用的技术,所以有空可以了解一下,说不定什么时候就用上了。另外,ZXing库除了二维码外,其实对于条形码也是支持的,只是我这里没有介绍。有需要的自己去看看源码即可。

⑶ android怎样生成条码和二维码

一、问题描述 在开发中需要将信息转换为二维码存储并要求带有公司的logo,我们知道Google的Zxing开源项目就很好的帮助我们实现条形码、二维码的生成和解析,但带有logo的官网并没有提供demo,下面就通过实例看看如何实现以及Zxing的使用。 二、案例介绍 1、案例运行效果 2、案例准备工作 在项目中加入jar,只需加入core/zxing/zxing/ 三、Zxing主要组件 1、BarcodeFormat 定义了不同的二进制编码方式,取值如下 EAN_13条形码,共计13位代码,比较常见,如商品上的包装上的都是这种条形码 CODE_QR二维码(矩阵码),比条形码存在更多信息,当下比较流行 CODE_128条形码 可表示可表示从 ASCII 0 到ASCII 127 共128个字符,用于企业管理,生产流程控制 CODE_39条形码,编制简单只接受如下43个字符 2、MultiFormatWriter 主要包含一个 encode()方法,可实现产生编码(条形、二维码) BitMatrix encode(String contents, BarcodeFormat format, int width, int height,Hashtable hints)方法 参数: contents:要编码的内容 format:编码格式(条形、二维) width,height:生成码的大小 hints:包含EncodeHintType(编码提示类型)信息的集合,主要设置字符编码,比如支持汉字的utf-8,如下: Hashtable hst = new Hashtable(); hst.put(EncodeHintType.CHARACTER_SET, “UTF-8″); 返回值:BitMatrix 二维矩阵点 3、BitMatrix BitMatrix :表现为一个二维矩阵,x表示列的位置,y表示行的位置,循序从左上角开始,一列一列排列(先x后y) 主要方法: getWidth():返回矩阵的宽度 getHeight():返回矩阵的高度 boolean get(x,y) :非常重要的方法,实现根据给定的x,y判断该位置是否有黑块 在产生二维码的应用中就是通过这个方法进行判断,然后把有黑块的点记录下来,使用Bitmap的setPixels()方法生成图形,详解案例的createCode()方法中的代码 四、完整代码 public class MainActivity extends Activity { private EditText etCompany; private EditText etPhone; private EditText etEmail; private EditText etWeb; private Bitmap logo; private static final int IMAGE_HALFWIDTH = 40;//宽度值,影响中间图片大小 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获得资源图片,可改成获取本地图片或拍照获取图片 logo=BitmapFactory.decodeResource(super.getResources(),R.drawable.y014); etCompany =(EditText) findViewById(R.id.etCompany); etPhone=(EditText) findViewById(R.id.etPhone); etEmail =(EditText) findViewById(R.id.etEmail); etWeb =(EditText) findViewById(R.id.etWeb); findViewById(R.id.but).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String company=etCompany.getText().toString().trim() ; String phone =etPhone .getText().toString().trim() ; String email = etEmail.getText().toString().trim() ; String web = etWeb.getText().toString().trim() ; //二维码中包含的文本信息 String contents= "BEGIN:VCARD/nVERSION:3.0/nORG:"+company+"/nTEL:"+phone+"/nURL:"+web+"/nEMAIL:"+email+"/nEND:VCARD"; try { //调用方法createCode生成二维码 Bitmap bm=createCode(contents,logo,BarcodeFormat.QR_CODE); ImageView img=(ImageView)findViewById(R.id.imgCode) ; //将二维码在界面中显示 img.setImageBitmap(bm); } catch (WriterException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } /** * 生成二维码 * @param string 二维码中包含的文本信息 * @param mBitmap logo图片 * @param format 编码格式 * @return Bitmap 位图 * @throws WriterException */ public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format) throws WriterException { Matrix m = new Matrix(); float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth(); float sy = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getHeight(); m.setScale(sx, sy);//设置缩放信息 //将logo图片按martix设置的信息缩放 mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), mBitmap.getHeight(), m, false); MultiFormatWriter writer = new MultiFormatWriter(); Hashtable hst = new Hashtable(); hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");//设置字符编码 BitMatrix matrix = writer.encode(string, format, 400, 400, hst);//生成二维码矩阵信息 int width = matrix.getWidth();//矩阵高度 int height = matrix.getHeight();//矩阵宽度 int halfW = width / 2; int halfH = height / 2; int[] pixels = new int[width * height];//定义数组长度为矩阵高度*矩阵宽度,用于记录矩阵中像素信息 for (int y = 0; y < height; y++) {//从行开始迭代矩阵 for (int x = 0; x < width; x++) {//迭代列 if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH && y > halfH - IMAGE_HALFWIDTH && y < halfH + IMAGE_HALFWIDTH) {//该位置用于存放图片信息 //记录图片每个像素信息 pixels[y * width + x] = mBitmap.getPixel(x - halfW + IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH); } else { if (matrix.get(x, y)) {//如果有黑块点,记录信息 pixels[y * width + x] = 0xff000000;//记录黑块信息 } } } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); // 通过像素数组生成bitmap bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; } }

⑷ android zxing可以扫描条形码吗

这说明条形码里存储的就是这些信息(就行二维码里存储的一版都是一个网址一样),如果想找到对应的信息,需要查询对应的数据库,找到你想要的信息并显示出来。

⑸ barcode4j和zxing哪个好用,各有什么优缺点

barcode4j适合生成条形码,不适合生成二维码 还有资料比较少(说实话,条形码生成也不咋滴,图片在手机上面显示严重失真,难看的要死,最终还是用js画的。如果你不是完美主义就不用看了)

zxing是google的东西,文档什么的都比较全面,zxing也能够生成条形码,但是没有下面的数字,(不过你可以自己画上去嘛) ,二维码就不说的,我看很多android上面的二维码生成和扫描都是用的zxing。

⑹ 求助,Android 条码生成

网络搜索zxing吧,既能生成二维码/条形码,也能解析二维码/条形码

⑺ android 解析条形码 ZXing库详细介绍

Zxing是谷歌的开源项目,你要研究它,先要找到他的入口,你去androidmanifest,xml中看看那个是程序的主启动类,然后根据主入口,一步一步看它的执行过程,最好打打DEBUG断点,那你可以更好的知道代码执行到哪里了!! 有摄像头是肯定的,没有如何扫描呢??目前好像不支持本地的条形码解析吧,扫描功能不是摄像头带的,是用代码去操控摄像头的!!建议你去google找到这个项目主页,下载那个ZxingTEST,这个比完整版的代码要简单,你可以看看

⑻ android zxing怎么扫描二维码和条形码

http://repo1.maven.org/maven2/com/google/zxing/android-core/3.2.1/android-core-3.2.1.jar导入这个jar包,使用方法见GitHub
https://github.com/zxing/zxing

⑼ android里面 条形码扫描 应该是怎么做的,有没有源码 什么的,发一个给我啊

1、下载ZBar官方SDK程序(下载链接:http://zbar.sourceforge.net/index.html),并打开项目,如下图:

⑽ 我自己的android应用利用zxing识别出二维码、条形码、如何将扫面的数据联网查询条形码数据库

你需要在网络端建立一个数据库,android扫描到条码以后通过http将条码的信息发送给网络端,网络端利用PHP程序就可以查询数据库做相应的处理了。

阅读全文

与androidzxing生成条形码相关的资料

热点内容
vb编程10个随机函数 浏览:5
程序员个人简介100 浏览:770
土木工程师算法工程师 浏览:90
javaexcel导入oracle 浏览:877
如何设置异地服务器 浏览:882
为什么安卓手机蓝牙耳机不会弹窗 浏览:546
linuxf77编译器安装教程 浏览:949
android本地录音权限 浏览:446
加密u盘内容怎么拷贝 浏览:283
安卓手机为什么看不到iso文件 浏览:582
用图片做文件夹图标 浏览:693
java正则表达式语法 浏览:865
美图秀在线压缩图片 浏览:184
苹果自带控制app是什么 浏览:907
孩子学编程怎么样 浏览:589
网络编程经典书籍 浏览:612
曲靖创建网站java程序员 浏览:690
256位加密中是什么意思 浏览:97
php多维数组去重 浏览:308
做程序员这一行储备人才怎么看 浏览:461