Android二维码解析和生成(菜鸟的福利来了,70多行代码实现)

            001.作为一个菜鸟,在实现二维码扫描时耗时良久,爬过很多坑庆幸终于得带了解决,得益于慕课网的视频,主要也是精简Zxing的二维码打包为第三方库,直接引入自己项目!总之菜鸟们的福利来了,70多行代码量完成二维码的扫描识别和生成,废话不多说先上项目开发之前的资源:

                   00a.eclipse的第三方架包   jar包下载地址

                   00b. 第三方库文件地址    精简之后的代码文件     (下载的为as代码,直接选择有用的导入ec即可)

                   00c. 先上效果图看看 :                 欢迎交流学习


                 002.将下载的jar包导入libs项目,将下载的第三方库文件解压缩,复制java目录下的文件到自己新建的项目src下(因为我的包名有com,所以目录选取的com后面的,根据自己的选择),按图操作




                     

  003.开始新建自己的项目,之后配置清单文件,如下:

        <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.example.qzxing"
       android:versionCode="1"
        android:versionName="1.0" >

     <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.qzxing.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <activity android:name="com.xys.libzxing.zxing.activity.CaptureActivity"/>
    </application>

</manifest>


布局文件:

<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"
    android:layout_margin="10dp"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="doClick"
        android:text="Parser QRCode" />
    <TextView 
        android:text="Result:"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        />
    <TextView 
        android:id="@+id/resultId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        />

    <EditText
        android:id="@+id/editId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >
        <requestFocus />
    </EditText>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="doClick1"
        android:text="Create QRCode" />
    <CheckBox 
        android:id="@+id/checkId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Logo"
        />
    <ImageView 
        android:id="@+id/imgId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/ic_launcher"
        
        />

</LinearLayout>

  

                     004.直接开始编写代码:

public class MainActivity extends Activity {

       //初始化控件
       private TextView mTvResult;//解析的二维码结果
       private EditText mInput;//输入要生成的二维码文本
       private ImageView mImg;//显示生成的二维码
       private CheckBox mLogo;//是否添加Logo选项

       @Override
       protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);


                mTvResult=(TextView)findViewById(R.id.resultId);
                mInput=(EditText)findViewById(R.id.editId);
                mImg=(ImageView)findViewById(R.id.imgId);
                mLogo=(CheckBox)findViewById(R.id.checkId);
       }

        /*-------------------------------------------- 解析二维码 -------------------------------------*/
        /** 点击按钮时通过第三方解析二维码*/
        public void doClick(View v){
               //接收CaptureActivity返回的数据,显示在我们的Activity
               startActivityForResult(new Intent(MainActivity.this,CaptureActivity.class), 0);//resultCode:默认值0
        }

        /**有了startActivityForResult,就需要重写此方法获取CaptureActivity返回的数据*/
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

               super.onActivityResult(requestCode, resultCode, data);
               //判断返回码是否成功
               if(resultCode==RESULT_OK){
               Bundle bundle=data.getExtras();//返回的数据都是存储在Intent data中
              //根据扫描时存的key取值(CaptureActivity中)
       /*
        * //二维码的数据是对一串文本的编码,所以扫描的二维码返回也是一串文本,可以是真实的String或者url地址,
        * 都可以转化为文本储存
        */
              String result=bundle.getString("result");
               Log.i("Info", result);
               //显示扫描的结果
               mTvResult.setText(result);
              }
        }

/*-------------------------------------------- 生成二维码 -------------------------------------*/

        //点击生成二维码
        /**二维码可以放置logo是因为:二维码的高容错性,编码具有一定的纠错性,覆盖一部分一样可以解码*/
        public void doClick1(View v){

        //点击按钮获取输入的内容
        String input=mInput.getText().toString();
         if(input.equals("")){
                Toast.makeText(MainActivity.this, "输入不能为空!!!", 0).show();


          }else{//生成二维码
         //参数:1.content:我们输入的文字   2.widthPix:二维码宽度 500  3.heightPix:二维码高度 500 4.logoBm:二维码中间的logo
                 Bitmap bitmap=EncodingUtils.createQRCode(input, 500, 500, 
                 mLogo.isChecked() ? BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher) : null);//三目定理需要Logo时自己设置,null 不设置logo
                 //将生成的二维码显示出来
                 mImg.setImageBitmap(bitmap);
          }
     }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值