Android第七期 - 二维码扫描与生成图
首先是MainActivity.java部分: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 package com.qrcode; import com.google.zxing.WriterException; import com.zxing.activity.CaptureActivity; import com.zxing.encoding.EncodingHandler; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; 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{ private TextViewresultTextView; private EditTextqrStrEditText; private ImageViewqrImgImageView; @Override public void onCreate(BundlesavedInstanceState){ super .onCreate(savedInstanceState); setContentView(R.layout.main); resultTextView=(TextView) this .findViewById(R.id.tv_scan_result); qrStrEditText=(EditText) this .findViewById(R.id.et_qr_string); qrImgImageView=(ImageView) this .findViewById(R.id.iv_qr_image); ButtonscanBarCodeButton=(Button) this .findViewById(R.id.btn_scan_barcode); scanBarCodeButton.setOnClickListener( new OnClickListener(){ @Override public void onClick(Viewv){ IntentopenCameraIntent= new Intent(MainActivity. this ,CaptureActivity. class ); startActivityForResult(openCameraIntent, 0 ); } }); ButtongenerateQRCodeButton=(Button) this .findViewById(R.id.btn_add_qrcode); generateQRCodeButton.setOnClickListener( new OnClickListener(){ @Override public void onClick(Viewv){ try { StringcontentString=qrStrEditText.getText().toString(); if (!contentString.equals( "" )){ BitmapqrCodeBitmap=EncodingHandler.createQRCode(contentString, 350 ); qrImgImageView.setImageBitmap(qrCodeBitmap); } else { Toast.makeText(MainActivity. this , "Textcannotbeempty" ,Toast.LENGTH_SHORT).show(); } } catch (WriterExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }); } @Override protected void onActivityResult( int requestCode, int resultCode,Intentdata){ super .onActivityResult(requestCode,resultCode,data); if (resultCode==RESULT_OK){ Bundlebundle=data.getExtras(); StringscanResult=bundle.getString( "result" ); resultTextView.setText(scanResult); } } } 下面就是构成拍摄页面的部分由于很多都是继承的代码,这里我就不粘贴了,给大家一个图看一下,下面放出整理后的代码。 最后别忘了给权限部分: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <? xml version = "1.0" encoding = "utf-8" ?> < manifest xmlns:android = "http://schemas.android.com/apk/res/android" package = "com.qrcode" android:versionCode = "1" android:versionName = "1.0" > < uses-sdk android:minSdkVersion = "7" /> < uses-permission android:name = "android.permission.VIBRATE" /> <!--震动权限--> < uses-permission android:name = "android.permission.CAMERA" /> < uses-feature android:name = "android.hardware.camera" /> <!--使用照相机权限--> < uses-feature android:name = "android.hardware.camera.autofocus" /> <!--自动聚焦权限--> < application android:icon = "@drawable/icon" android:label = "@string/app_name" > < activity android:name = ".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:configChanges = "orientation|keyboardHidden" android:name = "com.zxing.activity.CaptureActivity" android:screenOrientation = "portrait" android:theme = "@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode = "stateAlwaysHidden" > </ activity > </ application > </ manifest > 效果图: 附件:http://down.51cto.com/data/2364587 本文转自 吴雨声 51CTO博客,原文链接:http://blog.51cto.com/liangxiao/1432467,如需转载请自行联系原作者