Android二维码的扫描和生成(ZXing)

来源:互联网 发布:淘宝店铺如何增加客服 编辑:程序博客网 时间:2024/04/29 00:35

        最近在做项目的时候,遇到了一个绑定设备的问题,讨论之后,遂采用二维码技术。听起来是否很高大,感觉实现起来没有头绪,不用担心,早有牛人写好,我们直接用他写的开源代码包即可,原始的开源代码包非常大,装载和编译起来不容易,所以我们把开源代码包简化了,只保留生成二维码和扫描二维码的代码内容,下载地址在内容后,这样就方便多了,废话不多说,以下为实现的图和代码:

                                          

 

                                              \

  在玩成上述功能之前,首先我们要引入ZXing的开源代码包,引入的方式与上一篇博客中的侧滑菜单的引入方式相同,在此不做细说,可以参考上一篇博客。

  1 activity_main.xml    

<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"   >   <Button                   android:id="@+id/scann"                  android:layout_height="wrap_content"                  android:layout_width="fill_parent"                  android:text="开始扫描"/>      <TextView                             android:id="@+id/showcontent"                         android:layout_height="wrap_content"                         android:layout_width="fill_parent"                         android:text="二维码内容"                         />                <EditText                             android:id="@+id/input"                          android:layout_width="fill_parent"                          android:layout_height="wrap_content"                          android:hint="请输入要编码的内容"                          />                <Button                             android:id="@+id/shengcheng"                          android:layout_width="fill_parent"                          android:layout_height="wrap_content"                          android:text="生成二维码"/>                                 <TextView                                android:id="@+id/show"                              android:layout_width="fill_parent"                              android:layout_height="wrap_content"                               android:text="扫描二维码后的内容"/>                                <ImageView                                    android:id="@+id/image"                                  android:layout_width="wrap_content"                                  android:layout_height="wrap_content"                                  android:layout_gravity="center_horizontal"/>                                                             </LinearLayout></span>
2 MainActivity.java

<span style="font-size:18px;">package com.example.ni;/** * 二维码的生成和扫描 */import com.google.zxing.WriterException;import com.zxing.activity.CaptureActivity;import com.zxing.encoding.EncodingHandler;import android.support.v7.app.ActionBarActivity;import android.app.Activity;import android.app.Service;import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Vibrator;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private  TextView   show;private   Button   scannbutton;private   Button   createpassword;private   EditText   password;private  ImageView  view;private   Button   vibartor;private  TextView   showerweima;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);show = (TextView)findViewById(R.id.showcontent);scannbutton =(Button) findViewById(R.id.scann);createpassword = (Button)findViewById(R.id.shengcheng);password = (EditText)findViewById(R.id.input);view = (ImageView)findViewById(R.id.image);showerweima = (TextView)findViewById(R.id.show);//vibartor = (Button)findViewById(R.id.zhendong);//vibartor.setOnClickListener(this);scannbutton.setOnClickListener(this);createpassword.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.scann:Toast.makeText(getApplicationContext(), "开始扫描", 0).show();Intent  intent = new Intent(MainActivity.this,CaptureActivity.class);// startActivity(intent);startActivityForResult(intent, 0);break;case  R.id.shengcheng:String   input =  password.getText().toString();if(input.equals("")){Toast.makeText(getApplicationContext(), "请输入文本", 0).show();}else{try {        Bitmap   qrcode = EncodingHandler. createQRCode(input, 400);     //生成二维码的方法          view.setImageBitmap(qrcode);} catch (WriterException e) {// TODO Auto-generated catch blocke.printStackTrace();}        }      break;  }}//用来接收来自从另外一个界面处理完后的数据,在当前界面对处理完后的数据进行处理@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if(resultCode == RESULT_OK){String result = data.getExtras().getString("result");showerweima.setText(result);}}   }</span>

代码非常简单,清晰明了,如果有疑问可发问题,大家互相学习。源代码地址:

开源代码包地址:http://download.csdn.net/detail/danielntz/9461119

程序地址:http://download.csdn.net/detail/danielntz/9461131

    

      

     

    

      

      

     

0 0
原创粉丝点击