android仿微信识别相册中二维码图片信息
仿照微信识别相册中二维码,写了一个Demo,供参考使用
1、添加依赖,基于zxing,使用了Glide选择的图片进行了显示
compile 'com.google.zxing:core:3.2.1'compile 'cn.bingoogolapple:bga-qrcodecore:1.1.3@aar'compile 'cn.bingoogolapple:bga-zxing:1.1.3@aar'compile 'com.github.bumptech.glide:glide:3.7.0'
2、详细代码,注释写的很清楚
测试过程中发现小米手机相册返回的Uri格式会导致程序崩溃,对返回的Uri进行了处理,该问题已解决
/*** @author geqipeng* @date 2017/8/31*/public class ThirdActivity extends Activity {private static final int CODE_GALLERY_REQUEST = 1;private ImageView mImageShow;private TextView mTvContent;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_third);initView();}private void initView() {mImageShow = (ImageView) findViewById(R.id.image_show);mTvContent = (TextView) findViewById(R.id.tv_content);//选择相册中图片findViewById(R.id.btn_choice_pic).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intentFromGallery = new Intent();intentFromGallery.setType("image/*");intentFromGallery.setAction(Intent.ACTION_PICK);startActivityForResult(intentFromGallery, CODE_GALLERY_REQUEST);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == CODE_GALLERY_REQUEST) {Uri uri = data.getData();String[] filePathColumn = {MediaStore.Audio.Media.DATA};if (null == filePathColumn) {return;}Cursor cursor = getContentResolver().query(getFileUri(uri), null, null, null, null);cursor.moveToFirst();//获取到的图片路径String photoPath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));cursor.close();//使用glide加载选择的图片Glide.with(this).load(uri).into(mImageShow);//显示获取到的信息String result = QRCodeDecoder.syncDecodeQRCode(photoPath);mTvContent.setText(result);}}/*** 处理uri方法,防止获取失败* @param uri* @return*/private Uri getFileUri(Uri uri) {try {if (uri.getScheme().equals("file")) {String path = uri.getEncodedPath();if (path != null) {path = Uri.decode(path);ContentResolver cr = this.getContentResolver();StringBuffer buff = new StringBuffer();buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")");Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,new String[]{MediaStore.Images.ImageColumns._ID},buff.toString(), null, null);int index = 0;for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID);index = cur.getInt(index);}if (index == 0) {} else {Uri uri_temp = Uri.parse("content://media/external/images/media/"+ index);if (uri_temp != null) {uri = uri_temp;}}}}} catch (Exception e) {}return uri;}
}
3、layout布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/btn_choice_pic"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="选择图片"/><ImageViewandroid:id="@+id/image_show"android:layout_width="200dp"android:layout_height="200dp" /><TextViewandroid:id="@+id/tv_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:textSize="14sp"/></LinearLayout>
4、效果图
吃水不忘挖井人:
感谢:http://blog.csdn.net/fan7983377/article/details/51499508
android仿微信识别相册中二维码图片信息相关推荐
- Android 长按识别图中二维码
基于 Zing, 初学android 代码质量可能不高 bigImage.setOnLongClickListener(new View.OnLongClickListener() {@Overri ...
- cocoscreator实现微信内置浏览器点击图片识别图中二维码
最近在做一个微信内置浏览器的小游戏,小游戏中有一个二维码,需要用户点击长按二维码弹出系统识别二维码按钮. 下面是解决步骤: 1.cocoscreator是如何实现在浏览器中渲染游戏画面的 看图中箭头处 ...
- 仿商城商品生成分享海报图片和识别图中二维码并跳转商品详情页
购物商城里面的商品分享给朋友的时候会生成一张海报图片,图片上附带这二维码图片,朋友拿到这张图片扫描上面的二维码就可以进入商品详情页查看此商品了.今天来做一下这种功能,先生成商品海报图片,然后长按这张图 ...
- 点击复制以及长按识别图中二维码功能
功能介绍:1.点击复制按钮,复制指定内容:2.借助微信浏览器识别图中二维码.效果如图: 功能介绍 点击复制功能 前提:引入clipboard.js html <div class="g ...
- JAVA 识别图片中二维码 opencv 识别精准
JAVA 识别图片中二维码 opencv 识别精准 文章目录 JAVA 识别图片中二维码 opencv 识别精准 一.添加依赖 二.依赖配置 三.测试类 四.结果 提示:以下是本篇文章正文内容,下面案 ...
- 小程序: 长按识别图中二维码
在小程序项目中,有时候我们需要按住二维码,弹出: 识别图中二维码的功能 1. API 小程序文档 - API - 媒体 - 图片 - perviewImage( ) : 在新页面中全屏预览图片.预览 ...
- Vue实现长按图片识别图中二维码
Vue实现长按图片识别图中二维码 思路:要想实现可以识别图片中的二维码,那必定是要将这张图进行上传操作,上传则需要file对象格式.不管是在H5还是APP中,展示的图片都是通过url的方式展示在img ...
- Zxing识别图中二维码实践
参考网上文章,做如下实践. implementation('com.journeyapps:zxing-android-embedded:3.6.0') { transitive = false } ...
- Android实现识别相册二维码
总所周知,二维码非常普及,android当中我们一般做二维码扫一扫功能大部分用的是zxing库,但是zxing的库demo中没有实现本地相册二维码功能,小编今天拿出来说一下哈哈. 首先我们先导入zxi ...
最新文章
- json数据在前端(javascript)和后端(php)转换
- eureka源码:开启eureka server
- RxJs fromEvent 工作原理分析
- MongoDB常用语句
- leetcode1039. 多边形三角剖分的最低得分(动态规划)
- mongodb数据库显示obj_Mongodb使用
- 反编译获取微信小程序源码
- IntelliJ IDEA使用教程
- 一键清理系统.bat
- 人工神经网络的应用有哪些方面,人工神经网络在生活中的应用
- dB、dBm、dBw和w的换算关系
- CCF CSP 201503-1 图像旋转
- 通过 PPT 快速给证件照换底色
- 如何更改win7开机启动画面
- UserWarning: Glyph 20809 (\N{CJK UNIFIED IDEOGRAPH-5149}) missing from current font解决方法
- tensorflow出现如下错误:AttributeError: ‘module’ object has no attribute ‘merge_all_summaries’
- 添加删除选项ABCD,
- 要事第一:最新的时间管理方法和实用的时间控制技巧
- C语言编译、链接简介
- Thinkphp内核虚拟资源素材源码交易下载平台网站源码