Android开发学习之路-二维码学习
这个月装逼有点少了,为什么呢,因为去考软件射鸡师了,快到儿童节了,赶紧写篇博纪念一下逝去的青春,唔,请忽略这句话。
二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦:
关于QR码编码的二维码,我们要知道几个特点:
1. 扫描时可以从各个角度去扫,也就是旋转多少度都没关系,不信吗?下次去肯德基买单试试咯。
2. 二维码有容错率,容错率越大,生成的二维码也就越复杂,但是越不容易出错,并且,当二维码被遮挡的时候也越容易扫描出来。这里我上传的二维码容错为30%,可以从左上角开始扫描,大概扫描到下图范围的时候就可以识别出来了:
3. 二维码的字符内容是有限制的,并且内容越多,二维码越复杂。如果想你的二维码容易被一些像素低的手机扫描出来,就尽量不要太复杂。
注意:二维码生成可以通过各种网站来完成,只需要输入内容即可得到。
既然二维码生成了,我们就要知道怎么用手机来扫描然后得到二维码代表的内容,这里介绍一个最简单的第三方库:barcodescaner
我们通过这个库,可以直接编写一个用于拍摄并识别的活动,然后通过活动返回的结果进行结果处理,具体的步骤如下:
1. 添加依赖
compile 'me.dm7.barcodescanner:zxing:1.8.4'
2. 创建一个活动,代码如下所示:
public class ScannerActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mZXingScannerView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mZXingScannerView = new ZXingScannerView(this); // 将ZXingScannerView作为布局
setContentView(mZXingScannerView);
} @Override
protected void onResume() {
super.onResume();
mZXingScannerView.setResultHandler(this); // 设置处理结果回调
mZXingScannerView.startCamera(); // 打开摄像头
} @Override
protected void onPause() {
super.onPause();
mZXingScannerView.stopCamera(); // 活动失去焦点的时候关闭摄像头
} @Override
public void handleResult(Result result) { // 实现回调接口,将数据回传并结束活动
Intent data = new Intent();
data.putExtra("text", result.getText());
setResult(RESULT_OK, data);
finish();
}
}
3. 在主活动中打开这个活动,并处理传回的数据:
public class HomeActivity extends AppCompatActivity {
private TextView mTextView;
private WebView mWebView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mTextView = (TextView) findViewById(R.id.tv);
mWebView = (WebView) findViewById(R.id.wv);
} public void scanCode(View view){
startActivityForResult(new Intent(this, ScannerActivity.class), 1);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
mTextView.setText(data.getStringExtra("text")); // 显示识别到的文字
mWebView.loadUrl(data.getStringExtra("text")); // 将识别的内容当作网址加载到WebView
}
}
}
4. 添加摄像头和访问网络权限:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
使用这个工具类的方法非常简单,只需要将一个ZXingScannerView作为整个活动的布局,然后设置解析成功的回调接口,实现回调的方法将数据回传个主活动即可。
当然,如果是需要一个自定义扫描界面的效果,就没有这么简单了。
Android开发学习之路-二维码学习的更多相关文章
- android开发之集成zxing,二维码,以及扫描二维码的功能实现。带源代码下载
package cc.jiusansec.www; import com.google.zxing.WriterException; import com.zxing.activity.Capture ...
- android开发修改相机扫描二维码框的高宽
我用的是网上一个现成的例子,可以直接用,但是高宽不合适,现在主流都是大屏幕手机了,所以需要更改. 找到CameraManager 类,更改下面的方法 public Rect getFramingRec ...
- Android之自定义生成彩色二维码
先导个zxing.jar包 下面是xml布局 activity_main.xml <RelativeLayout xmlns:android="http://schemas.andro ...
- php微信开发之带参数二维码的使用
最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把 ...
- Emgu-WPF学习使用-识别二维码的位置
原文:Emgu-WPF学习使用-识别二维码的位置 参考链接:http://blog.csdn.net/gaobobo138968/article/details/47663607 我完全参 ...
- android组件化方案、二维码扫码、Kotlin新闻客户端、动画特效等源码
Android精选源码 CalendarView日历选择器 android下拉刷新动画效果代码 一个非常方便的fragment页面框架 android组件化方案源码 Zxing实现二维码条形码的扫描和 ...
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
Android 高手进阶(21) 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处:http://blog.csdn.net/xiaanming/article/detail ...
- iOS开发——高级技术&生成二维码
生成二维码 因为项目里需要新增个功能,该功能用到了二维码技术.于是我便查阅了资料,先学习了二维码的生成. 我们使用libqrencode库来生成二维码.下载地址http://download.cs ...
- 【转】Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果--不错
原文网址:http://blog.csdn.net/xiaanming/article/details/10163203 转载请注明出处:http://blog.csdn.net/xiaanming/ ...
随机推荐
- WebADNuke整理
在webconfig上增添 <webadnuke> <database> <add name="SqlDbProvider" type="C ...
- Unity 依赖注入之一
在项目中引入Unity,建立一个接口IWork跟一个继承IWork接口的Work类 public interface IMyWork { void Work(); } public class MyW ...
- js 逻辑或
逻辑或操作符由两个竖线来表示||,属于短路操作符,也就是说,如果第一个操作数的求职结果为true,就不会对第二个操作数进行求值 var found = true; var result = found ...
- Linux系统编程之IO_缓冲和非缓冲
下面是一段类似日志记录的代码,已获取通讯的报文内容和当时的环境参数内容,就是创建一个文件,使用标准IO的fopen.fprintf进行输出记录.但是在调试中,刚开始我就傻眼了,文件创建成功了,但是实时 ...
- Python框架之Tornado(三)请求
概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...
- lua的C库
在云风的ejoy2d里是没有dll和so之类的东西的, 所有的C扩展都是类似这样写的: int ejoy2d_shader(lua_State *L) { luaL_Reg l[] = { ...
- 通过监听键盘,实现对UITextView的内容移动
视图出现时,增加观察 - (void)viewWillAppear:(BOOL)animated { // 增加对键盘的监听 [[NSNotificationCenter defaultCenter] ...
- Flume_常见的几个问题
在HDFS的文件默认生成文件大小1K,如何设置文件大小和数量 拷贝一份flume-conf.properties.template改名为hive-mem-size.properties hive-me ...
- Node.js Ubuntu下安装
安装 Node.js 依次执行以下指令: sudo apt-get update sudo apt-get install -y python-software-properties python g ...
- apk 反编译
http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 标签: android ...