Ownsight

?找回密码
?立即注册
搜索
热搜: 活动 交友 discuz
查看: 1179|回复: 0
打印 上一主题 下一主题

android 二维码 zxing

[复制链接]

803

主题

903

帖子

3201

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3201
跳转到指定楼层
楼主
发表于 2017-7-7 10:27:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
参考:http://blog.csdn.net/itluochen/article/details/52126511
http://blog.csdn.net/deng0zhaotai/article/details/38046913
下载核心jar包:http://central.maven.org/maven2/ ... .2.1/core-3.2.1.jar
1、生成二维码图片,那我们就来看看生成二维码图片的核心代码:
[java] view plain copy 在CODE上查看代码片派生到我的代码片
private Bitmap generateBitmap(String content,int width, int height) {??
? ? QRCodeWriter qrCodeWriter = new QRCodeWriter();??
? ? Map hints = new HashMap<>();??
? ? hints.put(EncodeHintType.CHARACTER_SET, "utf-8");??
? ? try {??
? ?? ???BitMatrix encode = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);??
? ?? ???int[] pixels = new int[width * height];??
? ?? ???for (int i = 0; i < height; i++) {??
? ?? ?? ?? ?for (int j = 0; j < width; j++) {??
? ?? ?? ?? ?? ? if (encode.get(j, i)) {??
? ?? ?? ?? ?? ?? ???pixels[i * width + j] = 0x00000000;??
? ?? ?? ?? ?? ? } else {??
? ?? ?? ?? ?? ?? ???pixels[i * width + j] = 0xffffffff;??
? ?? ?? ?? ?? ? }??
? ?? ?? ?? ?}??
? ?? ???}??
? ?? ???return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.RGB_565);??
? ? } catch (WriterException e) {??
? ?? ???e.printStackTrace();??
? ? }??
? ? return null;??
}??


生成LOGO
private Bitmap addLogo(Bitmap qrBitmap, Bitmap logoBitmap) {??
? ? int qrBitmapWidth = qrBitmap.getWidth();??
? ? int qrBitmapHeight = qrBitmap.getHeight();??
? ? int logoBitmapWidth = logoBitmap.getWidth();??
? ? int logoBitmapHeight = logoBitmap.getHeight();??
? ? Bitmap blankBitmap = Bitmap.createBitmap(qrBitmapWidth, qrBitmapHeight, Bitmap.Config.ARGB_8888);??
? ? Canvas canvas = new Canvas(blankBitmap);??
? ? canvas.drawBitmap(qrBitmap, 0, 0, null);??
? ? canvas.save(Canvas.ALL_SAVE_FLAG);??
? ? float scaleSize = 1.0f;??
? ? while ((logoBitmapWidth / scaleSize) > (qrBitmapWidth / 5) || (logoBitmapHeight / scaleSize) > (qrBitmapHeight / 5)) {??
? ?? ???scaleSize *= 2;??
? ? }??
? ? float sx = 1.0f / scaleSize;??
? ? canvas.scale(sx, sx, qrBitmapWidth / 2, qrBitmapHeight / 2);??
? ? canvas.drawBitmap(logoBitmap, (qrBitmapWidth - logoBitmapWidth) / 2, (qrBitmapHeight - logoBitmapHeight) / 2, null);??
? ? canvas.restore();??
? ? return blankBitmap;??
}??
使用完整代码
public void generate(View view) {??
? ? Bitmap qrBitmap = generateBitmap("http://www.csdn.net",400, 400);??
? ? Bitmap logoBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);??
? ? Bitmap bitmap = addLogo(qrBitmap, logoBitmap);??
? ? iv.setImageBitmap(bitmap);??
}??
2、识别二维码
工具:http://ant.apache.org/bindownload.cgi
下载最新的工程https://github.com/zxing/zxing,在eclipse中引入已存在的项目,然后在项目中yabo sports app上面的核心代码,再将工程转换成jdk 1.7+,以及导出平台设计在19 也就是4.4之上,基本上就可以解决大部分的错误,最后只剩下CameraConfigurationUtils 类不存在的错误


缺少CameraConfigurationUtils类
通过搜索,在以下目录找到了这个类
zxing-master\android-core\src\main\java\com\google\zxing\client\android\camera
在拷贝到
zxing-master\android\src\com\google\zxing\client\android\camera


再就是因为平台版本不同,代码不同,我这个版本没有getStartTimestamp? ? ? ? 这个函数,不过可以转换过来,
? ?calendarResult.getStart().getTime(),
? ?? ?? ?? ?? ???//? ?? ?calendarResult.getStartTimestamp(),
经过发布测试,程序可用,但是怎么引入到其他的项目中还需要研究



有很多的方式,比如ant mvn等,设置来设置区还需要VPN,这里很恼火,暂时先考虑别的方案了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表