4.15 Android 二维码扫描和生成《未整理》

1:草料二微码生成器


2:二微码的三个角是用来确定二维码的方向的 。

有黑的白的,表示0和1,

只要用到编码和解码就行了。


ZXing 条码和二维码的扫描的功能。

1:摄像头,需要用到自定义的摄像头。内部的预览的接口,


新建一个新的activity:


ZXing 现在在GitHub里面也有
https://github.com/zxing/zxing

支持的非常好。


可以需要通过gradle来下载jar包。
在Android studio 里面导包
f4,dependecy
搜索zxing得到
com.google.zxing:zxing:core:3.2.1
com.google.zxing:android-core:3.2.1
同步之后
现在还不能用。


现在需要专门的代码:
++++++++++++++++++++++++++++
怎么将一个代码导入进去
File->New->Import Module
+++++++++++++++++++++++++++++


ZXing android 里面的清单文件。
有一个CaptureActivity
<Intent-Filter>


<


在原本的布局里面添加一个按钮“点击扫描二维码”


Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent,998);


ZXing android 界面内部也导入了那个。jar包了。


-----------------------------
下面的两句话,可以做也可以不做
修改我们自己的 删除哪两个包。

compile project(':ZXingAndroid');


这一步 也可以在f4 dependency 里面添加的时候选择model就性了

-----------------------------------


二维码:
1:需要导入ZXing Android 版本,
2:设置类库的依赖,例如app 依赖ZXingAndroid 模块;
3:通过ZXingAndroid 提供的隐式意图,就可扫描的,注意这个版本必须要用这个饮食意图。
com.google.zxing.client.android.SCAN
4:startActivityForResult
这个时候它的二维码的扫描是长方形的。
Intents 类可以直接使用,来设置ACTION,和其余的参数;
例如,扫描时候的取景框的宽高,都可以设置。


Intent intent = new Intent("com.google.zxing.client.android.SCAN");
//Intents.Scan.ACTION,其实就是com.google.zxing.client.android.SCAN
//Intents.Scan.WIDTH也可以设置
Intent.putExtra(Intents.Scan.WIDTH,600);
Intent.putExtra(Intents.Scan.HEIGHT,600);
startActivityForResult(intent,998);
扫描的时候特别慢,因为要扫描各种格式,
Intents.SCAN.MODE 默认情况下检测所有的二维码的信息。
如果想要只指定一种呢?
PRODUCT_MODE->条形码
QR_CODE_MODE->QR码。


还有一个FORMATS 这个是
支付宝是QR_CODE/onede CODE


Intent.putExtra(Intents.Scan.MODE,Intents.SCAN.QR_CODE_MODE);;




5: 获取结果,通过onActivityResult来获取,内容都在Intent中
返回的结果都在Intent 中。




onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode=998){
if(resultCode==RESULT_OK){
String stringExtra = data.getStringExtra(Intents.Scan.RESULT);//如果是字符串就是RESULT,如果是字节就是RESULT_BYTES
Log.d("BarCodeActivity","barcode"+stringExtra);
}


}
}
这个时候自己生成一个带字符的二维码就行了。




+++++++++++++++++++++++
如何生成二维码呢?
添加一个button 点击生成二维码
最终的是一个图片Bitmap,
生成的步骤:
1:准备数据
2:生成的格式,二维码,
3:通过编码生成1,0结构,也称为0,1矩阵
4:通过矩阵,生成Bitmap


需要找com.google.zxing.MutiFormatWriter这个类


MultiFormatWriter writer = new MultiFormatWriter();
//QR_CODE 是国内最常用的。生成一个0,1的矩阵,这个矩阵实际上就是二维码的黑白位置的标注
BitMatrix bitMatrix = writer.encode(“Hello World”,BarcodeFormat.QR_CODE,128,128);
需要我们单独的画出来。


这个矩阵是
0,0,1,0,1,1,1,1,1------1 width个数子
0,0,1,0,1,1,1,1,1------1
0,0,1,0,1,1,1,1,1------1
0,0,1,0,1,1,1,1,1------1
|
0,0,1,0,1,1,1,1,1------1
Height 行


需要手动生成Bitmap,按照0,1 进行绘制;


//生成Bitmap,进行绘制
//创建空的,可以绘制的bitmap
Bitmap bitmap =Bitmap.createBitmap(128,128,Bitmap。Config.ARGB_8888);
//创建bitmap的画布,用于绘制Bitmap,它可以直接这样绘制了,因为上面的bitmap 是空的
//可以不使用canvas,直接使用setPixel。Canvas canvas = new Canvas(bitmap);




int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();




for(int i=0;i<height;i++){
for(int j =0;j<width;j++){
boolean b =bitMatrix.get(j,i);
if(b){
//1 true 代表需要的是黑色
bitmap.setPixel(j,i,Color.BLACK);
}else{
//0 false 代表需要绘制白色
bitmap.setPixel(j,i,Color.WHITE);
}
}


}


再设置一个ImageView 用来显示。
id ->image_code


mImageView.setImageBitmap(bitmap);


----------------------------------------
----------------------------------------
当然 也可以有简单的方法:
使用Intent 生成二维码
//使用Intent 来生成二维码
Intent intent = new Intent(Intents.Encode.ACTION);
intent.putExtra(Intents.Encode.FORMAT,BarCodeFormat.QR_CODE.name());//如果Intents.Encode.FORMAT没有指定,默认的是QR码
//一定要注意上面传的是编码的name,一定要有这个name
intent.putExtra(Intents.Encode.DATA,"Hello World");
intent.putExtra(Intents.Encode.TYPE,Contents.Type.TEXT);//如果是QR码类型必须要指定。
startActivity(intent);


--------------------------------------------
---------------------------------------------
如果想要在二维码中间放一个图片呢?


明天支付:
第三方登录,分享 OAuth,




推送
统计分析
加密
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值