用google zxing生成二维码和扫描二维码
来源:互联网 发布:c语言公开课 编辑:程序博客网 时间:2024/06/05 00:10
二维码生成扫描仪应用程序详解。作品已上线地址为http://android.myapp.com/myapp/detail.htm?apkName=cn.erweima.creat。可以下载玩玩看下效果。
采用系统原生功能进行分享。
首先集成zxing的core-3.0.0.jar文件和源码。源码应该放在包的根节点下。如图:
代码已上传地址为http://download.csdn.net/detail/u013692888/9644278.google.zxing.client.android包名别改变。在AndroidManifest.xml里配置google的活动和必要的权限。
<uses-permission android:name =“android.permission.WRITE_EXTERNAL_STORAGE”/> <uses-permission android:name =“android.permission.MOUNT_UNMOUNT_FILESYSTEMS”> </ uses-permission> <uses-permission android:name =“android.permission.INTERNET”> </ uses-permission> <uses-permission android:name =“android.permission.VIBRATE”/> <uses-permission android:name =“android.permission.FLASHLIGHT”/> <uses-permission android:name =“android.permission.CAMERA”/> <uses-permission android:name =“android.permission.CAMERA”/> <uses-feature android:name =“android.hardware.camera”/> <uses-feature android:name =“android.hardware.camera.autofocus”/> <! - Zxing - > <活动 android:name =“google.zxing.client.android.MipcaActivityCapture” android:configChanges =“orientation | keyboardHidden” android:screenOrientation =“portrait” android:theme =“@ android:style / Theme.Translucent.NoTitleBar” android:windowSoftInputMode =“stateAlwaysHidden”> </ activity>
生成二维码代码如下:
/ ** * *生成QRCode(二维码) * @throws WriterException * / public static Bitmap createQRCode(String url)throws WriterException { if(url == null || url.equals(“”)){ return null; }} Hashtable hints = new Hashtable(); hints.put(EncodeHintType.CHARACTER_SET,“UTF-8”); //生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败 BitMatrix matrix = new MultiFormatWriter()。encode(url, BarcodeFormat.QR_CODE,width,width,hints); int width = matrix.getWidth(); int height1 = matrix.getHeight(); int height = height1; //二维矩阵转为一维像素数组,也就是一直横着排了 int [] pixels = new int [width * height]; for(int y = 0; y <height; y ++){ for(int x = 0; x <width; x ++){ if(matrix.get(x,y)){ 像素[y * width + x] = 0xff000000; }其他{ 像素[y * width + x] = 0xffffffff; }} }} }} 位图位图= Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels,0,width,0,0,width,height); 返回位图; }}生成后保存二维码到本地以便于分享/ ** *保存二维码 * @throws IOException * / public void saveMyBitmap()throws IOException { String path = Environment.getExternalStorageDirectory()。getPath()+“/ erweima /”; 文件文件=新文件(路径); if(!file.exists()){ file.mkdir(); }} File f = new File(path +“erweima.png”); f.createNewFile(); FileOutputStream fOut = null; 尝试{ fOut = new FileOutputStream(f); } catch(FileNotFoundException e){ e.printStackTrace(); }} mBitmap.compress(Bitmap.CompressFormat.PNG,100,fOut); 尝试{ fOut.flush(); } catch(IOException e){ e.printStackTrace(); }} 尝试{ fOut.close(); } catch(IOException e){ e.printStackTrace(); }} }}
分享是自定义菜单菜单
<item android:id =“@ + id / action_share” android:title =“@ string / share” app:actionProviderClass =“android.support.v7.widget.ShareActionProvider” app:showAsAction =“ifRoom”> </ item>在活动的创建菜单方法设置菜单为自定义的菜单。然后实例化ShareActionProvider对象。
@覆盖 public boolean onCreateOptionsMenu(Menu menu){ getMenuInflater()。inflate(R.menu.menu,menu); mShareActionProvider =(ShareActionProvider)MenuItemCompat.getActionProvider(menu .findItem(R.id.action_share)); showShare(); return true; }} public void showShare(){ 文件file = new File(Environment.getExternalStorageDirectory()。getPath()+“/ erweima / erweima.png”); mIntent = new Intent(Intent.ACTION_SEND); mIntent.setType(“image / *”); Uri uri = Uri.fromFile(file); mIntent.putExtra(Intent.EXTRA_STREAM,uri); mIntent.putExtra(Intent.EXTRA_TEXT,“来自二维码的分享”); mShareActionProvider.setShareIntent(mIntent); }}分享搞定,关键就是ShareActionProvider这个类的用法,都是调用的Api,不好解释。就放上代码看一下。
然后是扫描代码,扫描代码调用如下。
//调用二维码代码 Intent openCameraIntent = new Intent(getActivity(), MipcaActivityCapture.class); getActivity()。startActivityForResult(openCameraIntent,1212);通过读MipcaActivityCapture类的onResultHandler方法可以知道返回的是reult,code is 1212.在原活动接收就行了。private void onResultHandler(String resultString,Bitmap bitmap){ if(TextUtils.isEmpty(resultString)){ Toast.makeText(MipcaActivityCapture.this,“Scan failed!”,Toast.LENGTH_SHORT).show(); 返回; }} Intent resultIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putString(“result”,resultString); bundle.putParcelable(“bitmap”,bitmap); resultIntent.putExtras(bundle); this.setResult(1211,resultIntent); MipcaActivityCapture.this.finish(); }} @覆盖 protected void onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode,resultCode,data); if(requestCode == 1212 && data!= null){ mFragmentScan.refreshUi(data.getStringExtra(“result”)); }} }}最终效果如图:
0 5
- 用google zxing生成二维码和扫描二维码
- Android生成二维码和扫描二维码zxing
- 使用ZXing扫描二维码和生成二维码
- Zxing二维码扫描生成
- google ZXing 生成二维码
- Google ZXing生成二维码
- Android二维码的扫描和生成(ZXing)
- zxing框架扫描和生成二维码
- 使用ZXing扫描和生成二维码
- ZXing二维码、条形码生成和扫描
- 基于Zxing的二维码生成和二维码扫描
- 基于Zxing的二维码生成和二维码扫描
- Android基于Zxing实现二维码,条形码扫描和生成二维码
- 基于Zxing的二维码生成和二维码扫描
- zxing快速使用之生成二维码和扫描二维码
- google zxing 生成和解析二维码
- Zxing二维码、条形码扫描/生成
- 编译google Zxing,实现安卓一、二维码的扫描与生成
- kmalloc第二个参数的意义
- UVa OJ 1220 - Party at Hali-Bula
- 1 the brain and behavior
- 我的第一篇博客生涯
- PID算法的C语言实现
- 用google zxing生成二维码和扫描二维码
- UNIX & LINUX学习之开始使用Unix
- 【Linux笔记】Linux目录结构
- su - 和 su root 区别
- 9月英语总结--更多的是反思
- Debian 8桌面安装Nvidia GTX960显卡驱动
- CSS学习笔记-position定位(九)
- 【mongoDB实战】mongo日期插入
- Debian桌面编译安装Tenda U1 USB无线网卡驱动