android选取系统相册图片后,识别图中二维码

项目中添加设备操作需要扫描二维码,考虑到多种扫码方式,也添加直接识别二维码图片的操作。

首先跳转系统相册选取图片

        Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, DEVICE_PHOTO_REQUEST);

接着将选取的图片展示到界面

 1 @Override
 2     public void onActivityResult(int requestCode, int resultCode, Intent data) {
 3         //用户没有进行有效的设置操作,返回
 4         if (requestCode == Activity.RESULT_CANCELED ){
 5             ToastUtil.showToast(AddDeviceActivity.this, R.string.cancel);
 6             return;
 7         }
 8         if (DEVICE_PHOTO_REQUEST == requestCode){
 9             if (null != data) {
10                 Uri selectedImage = data.getData();
11                 String[] filePathColumns = {MediaStore.Images.Media.DATA};
12                 String imagePath;
13                 Cursor c = this.getContentResolver().query(selectedImage, filePathColumns, null, null, null);
14                 if (c != null) {
15                     c.moveToFirst();
16                     int columnIndex = c.getColumnIndex(filePathColumns[0]);
17                     imagePath = c.getString(columnIndex);
18                     c.close();
19
20             Bitmap bm = BitmapFactory.decodeFile(imgPath);
21             img_code.setImageBitmap(bm);
22                 } else {
23                     ToastUtil.showToast(this, "图片路径为空");
24                 }
25             }
26         }
27         super.onActivityResult(requestCode, resultCode, data);
28     }
29     

然后用第三包的方法解码识别(需要导入‘cn.bingoogolapple:bga-zxing:[email protected]‘),注意自己处理一下匿名 AsyncTask 内部类导致的Activity 泄漏问题

     img_code.setDrawingCacheEnabled(true);
        final Bitmap bmp = img_code.getDrawingCache();
        new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {
                return QRCodeDecoder.syncDecodeQRCode(bmp);
            }

            @Override
            protected void onPostExecute(String result) {
                if (TextUtils.isEmpty(result)) {
                    Toast.makeText(AddDeviceActivity.this, "二维码解析失败", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(AddDeviceActivity.this, result, Toast.LENGTH_SHORT).show();
                }
            }
        }.execute();
时间: 2024-10-29 03:20:30

android选取系统相册图片后,识别图中二维码的相关文章

Android 长按识别图中二维码 zxing

#基于 Zxing, 初学Android 代码质量不高 //长按,通过zxing读取图片,判断是否有二维码 bigImage.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View viewm) { Bitmap obmp = ((BitmapDrawable) (bigImage).getDrawable()).getBitmap(); int width

Python调用Tesseract-OCR和Zxing完成图片OCR识别和二维码解码

先贴代码: # 1.Install tesseract-ocr*.exe from http://jaist.dl.sourceforge.net/project/tesseract-ocr-alt/tesseract-ocr-setup-3.02.02.exe # 2.Install pillow as"pip install form *.whl" # 3.Install pytesseract as"pip install form *.whl" import

Android调用系统相册和相机选择图片并显示在imageview中

Android调用系统相册和相机选择图片并显示在imageview中,在系统调用相机拍摄中,直接返回的是经过压缩处理后的图像,当你直接把返还后的图片放在imageview中时 图片就会非常的模糊,所以要经过先存放在sd中,然后在处理并显示.当调用系统相册时,因为Android系统从4.4版本以后系统不再返回真实的uri路径,而是封装过后的uri路径,所以当你写代码时必须注意,4.4是一个分水岭,4.4以上的版本必须就通过解析和相应的处理才能获取到真实的uri路径. 先上程序运行的结果. 这个是调

Android 获取系统相册中的所有图片

Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public static List<String> getSystemPhotoList(Context context) { List<String> result = new ArrayList<String>(); Uri uri = MediaStore.Images.Medi

android——拍照,相册图片剪切其实就这么简单

接触android这么久了.还没有真正的浩浩看看android拍照,相册图片剪切到底是怎么回事,每次都是从别人的代码一扣,就过来了.其实,谷歌提供的API已经很强大.只需要用的好,就那么几句就可以搞定神秘的拍照和剪切图片.废话不多少,直接看源码 package com.example.testcamera; import java.io.FileNotFoundException; import android.app.Activity; import android.content.Inten

Android 刷新系统相册

Android 刷新系统相册 最近在做项目时,发现把照片保存到手机指定路径后,有些手机打开系统相册居然看不到,像三星 S3.小米2.sony lt26i和HTC等部分机型!但是中兴N881f.魅族 3等查看系统相册都可以正常的查看到最新保存的照片!原因可能是部分机型的相册不是每次打开都自动刷新的吧!现在说下解决办法如下代码: //扫描保存的照片文件.刷新相册 Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Ur

Android选择系统相册或拍照上传源码

简单示范获取系统相册图片和拍照获取图片回传压缩处理 下载地址:http://www.devstore.cn/code/info/821.html 运行截图:

在树莓派(Debian系统)上通过usb摄像头扫描识别QR二维码

树莓派(Debian系统)自带Python开发环境IDLE(Python 2.7.3),接上摄像头,就能通过Python实行对QR code的创建和识别: 首先,需要在树莓派上安装如下工具: sudo apt-get install python-imaging sudo apt-get install zbar-tools sudo apt-get install qrencode sudo apt-get install python-pygame 然后创建qrcode.py文件: #!/u

[Python]在Windows系统中使用ZXing模块实现二维码、条形码读码

??需要实现Python读取图片中二维码.条形码信息.前段时间研究使用zbarlight模块,费了很大功夫安装调试好,但是发现有些图片读取不正确,而且如果图片中二维码倾斜,就读取不了,不能满足要求.昨天琢磨着试一试ZXing,下载ZXing模块安装后,却一直报错.打开模块源码仔细分析,原来该模块是通过调用java程序,使用ZXing的java库来实现的,通过分析命令行输出得到解码结果.忙活了一天多,各种测试.查资料,终于解决了问题.调试过程非常艰辛,现将做法整理如下(Windows 10系统):