android 二维码扫描(zxing使用小结)(1),2024年最新android系统开发面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

slideTop = frame.top;

slideBottom = frame.bottom;

}

// 获取屏幕的宽和高

int width = canvas.getWidth();

int height = canvas.getHeight();

// 画出扫描框外面的阴影部分,共四个部分,扫描框的上面到屏幕上面,扫描框的下面到屏幕下面

// 扫描框的左边面到屏幕左边,扫描框的右边到屏幕右边

// Draw the exterior (i.e. outside the framing rect) darkened

paint.setColor(resultBitmap != null ? resultColor : maskColor);

canvas.drawRect(0, 0, width, frame.top, paint);

canvas.drawRect(0, frame.top, frame.left, frame.bottom + 1, paint);

canvas.drawRect(frame.right + 1, frame.top, width, frame.bottom + 1,

paint);

canvas.drawRect(0, frame.bottom + 1, width, height, paint);

if (resultBitmap != null) {

// Draw the opaque result bitmap over the scanning rectangle

paint.setAlpha(OPAQUE);

canvas.drawBitmap(resultBitmap, frame.left, frame.top, paint);

} else {

// 画扫描框边上的角,总共8个部分

paint.setColor(Color.GREEN);

canvas.drawRect(frame.left, frame.top, frame.left + ScreenRate,

frame.top + CORNER_WIDTH, paint);

canvas.drawRect(frame.left, frame.top, frame.left + CORNER_WIDTH, frame.top

  • ScreenRate, paint);

canvas.drawRect(frame.right - ScreenRate, frame.top, frame.right,

frame.top + CORNER_WIDTH, paint);

canvas.drawRect(frame.right - CORNER_WIDTH, frame.top, frame.right, frame.top

  • ScreenRate, paint);

canvas.drawRect(frame.left, frame.bottom - CORNER_WIDTH, frame.left

  • ScreenRate, frame.bottom, paint);

canvas.drawRect(frame.left, frame.bottom - ScreenRate,

frame.left + CORNER_WIDTH, frame.bottom, paint);

canvas.drawRect(frame.right - ScreenRate, frame.bottom - CORNER_WIDTH,

frame.right, frame.bottom, paint);

canvas.drawRect(frame.right - CORNER_WIDTH, frame.bottom - ScreenRate,

frame.right, frame.bottom, paint);

//绘制中间的线,每次刷新界面,中间的线往下移动SPEEN_DISTANCE

slideTop += SPEEN_DISTANCE;

if(slideTop >= frame.bottom){

slideTop = frame.top;

}

Rect lineRect = new Rect();

lineRect.left = frame.left;

lineRect.right = frame.right;

lineRect.top = slideTop;

lineRect.bottom = slideTop + 18;

canvas.drawBitmap(((BitmapDrawable)(getResources().getDrawable(R.drawable.qrcode_scan_line))).getBitmap(), null, lineRect, paint);

//画扫描框下面的字

// paint.setColor(Color.WHITE);

// paint.setTextSize(TEXT_SIZE * density);

// paint.setAlpha(0x40);

// paint.setTypeface(Typeface.create(“System”, Typeface.BOLD));

// String text = “将二维码放入框内, 即可自动扫描”;

// float textWidth = paint.measureText(text);

//

// canvas.drawText(text, (width - textWidth)/2, (float) (frame.bottom + (float)TEXT_PADDING_TOP *density), paint);

Collection currentPossible = possibleResultPoints;

Collection currentLast = lastPossibleResultPoints;

if (currentPossible.isEmpty()) {

lastPossibleResultPoints = null;

} else {

possibleResultPoints = new HashSet(5);

lastPossibleResultPoints = currentPossible;

paint.setAlpha(OPAQUE);

paint.setColor(resultPointColor);

for (ResultPoint point : currentPossible) {

canvas.drawCircle(frame.left + point.getX(), frame.top

  • point.getY(), 6.0f, paint);

}

}

if (currentLast != null) {

paint.setAlpha(OPAQUE / 2);

paint.setColor(resultPointColor);

for (ResultPoint point : currentLast) {

canvas.drawCircle(frame.left + point.getX(), frame.top

  • point.getY(), 3.0f, paint);

}

}

//只刷新扫描框的内容,其他地方不刷新

postInvalidateDelayed(ANIMATION_DELAY, frame.left, frame.top,

frame.right, frame.bottom);

}

}

2、调整位置

======

如果不设置全屏,扫描框的位置和取图的位置高度目测会有50px误差,

不全屏公式:((Y - 标题栏 - 状态栏)/2 - 扫描框高度)/2 = y轴坐标

只要不全屏:就会有误差,导致框中的二维码靠上或者远离二维码才会扫描成功

如果设置为全屏,就不会有误差,请了解内情的大神告知笔者,想知道什么原因造成

CameraManager.java 中 getFramingRect()方法

public Rect getFramingRect() {

Point screenResolution = configManager.getScreenResolution();

if (framingRect == null) {

if (camera == null) {

return null;

}

/* 确定在固定比例分辨率下二维码扫描框的宽高*/

int width = screenResolution.x * 3 / 4;

if (width < MIN_FRAME_WIDTH) {

width = MIN_FRAME_WIDTH;

} else if (width > MAX_FRAME_WIDTH) {

width = MAX_FRAME_WIDTH;

}

int height = screenResolution.y * 3 / 4;

if (height < MIN_FRAME_HEIGHT) {

height = MIN_FRAME_HEIGHT;

} else if (height > MAX_FRAME_HEIGHT) {

height = MAX_FRAME_HEIGHT;

}

//计算x轴y轴坐标,可在此调整二维码框的位置

int leftOffset = (screenResolution.x - width) / 2 ;

写在最后

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从哪里入手去学习,对此我整理了一些资料

如果你熟练掌握以下列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。

①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包,最后觉得有帮助、有需要的朋友可以点个赞

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

[外链图片转存中…(img-Es1LX40t-1713665273918)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-6Xjl8XZ6-1713665273918)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用zxingAndroid中生成和扫描二维码,您需要按照以下步骤操作: 1. 添加依赖项 将以下依赖项添加到您的项目中的build.gradle文件中: ``` implementation 'com.google.zxing:core:3.4.0' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' ``` 2. 生成二维码 使用以下代码在应用程序中生成二维码: ``` String data = "Hello, World!"; int width = 500; int height = 500; BitMatrix bitMatrix = new MultiFormatWriter().encode(data, BarcodeFormat.QR_CODE, width, height); BarcodeEncoder barcodeEncoder = new BarcodeEncoder(); Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix); ``` 3. 扫描二维码 要在Android应用程序中扫描二维码,您需要使用zxing提供的IntentIntegrator类。使用以下代码启动扫描器: ``` IntentIntegrator integrator = new IntentIntegrator(this); integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setPrompt("Scan a QR code"); integrator.setCameraId(0); integrator.setBeepEnabled(false); integrator.setBarcodeImageEnabled(true); integrator.initiateScan(); ``` 然后在onActivityResult()方法中处理扫描结果: ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (result != null) { if (result.getContents() == null) { Log.d(TAG, "Cancelled scan"); } else { Log.d(TAG, "Scanned: " + result.getContents()); } } else { super.onActivityResult(requestCode, resultCode, data); } } ``` 这就是使用zxingAndroid中生成和扫描二维码的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值