扫码

implementation 'com.journeyapps:zxing-android-embedded:3.5.0'IntentIntegrator integrator = new IntentIntegrator(MyApplication.activity);
// 设置要扫描的条码类型,ONE_D_CODE_TYPES:一维码,QR_CODE_TYPES-二维码
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
integrator.setCaptureActivity(ScanActivity.class); //设置打开摄像头的Activity
integrator.setPrompt("扫描二维码加好友"); //底部的提示文字,设为""可以置空
integrator.setCameraId(0); //前置或者后置摄像头
integrator.setBeepEnabled(true); //扫描成功的滴声,默认开启
integrator.setBarcodeImageEnabled(true);
integrator.initiateScan();@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (data != null){IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);if (scanResult != null) {String result = scanResult.getContents();LogUtils.log("code", result);}}
}//自定义扫描界面
public class ScanActivity extends BaseActivity {private CaptureManager capture;private DecoratedBarcodeView barcodeScannerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.scan);barcodeScannerView = findViewById(R.id.dbv_scan);capture = new CaptureManager(this, barcodeScannerView);capture.initializeFromIntent(getIntent(), savedInstanceState);capture.decode();}/*** Override to use a different layout.** @return the DecoratedBarcodeView*/protected DecoratedBarcodeView initializeContent() {return (DecoratedBarcodeView)findViewById(R.id.zxing_barcode_scanner);}@Overrideprotected void onResume() {super.onResume();capture.onResume();}@Overrideprotected void onPause() {super.onPause();capture.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();capture.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);capture.onSaveInstanceState(outState);}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {capture.onRequestPermissionsResult(requestCode, permissions, grantResults);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);}
}<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><com.journeyapps.barcodescanner.DecoratedBarcodeViewandroid:id="@+id/dbv_scan"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:textSize="@dimen/sp20"android:text="@string/friend_refuse"/>
</LinearLayout>

二维码

 /*** 生成简单二维码** @param content                字符串内容* @param width                  二维码宽度* @param height                 二维码高度* character_set          编码方式(一般使用UTF-8)* error_correction_level 容错率 L:7% M:15% Q:25% H:35%* @param margin                 空白边距(二维码与边框的空白区域)* @return BitMap*/public static Bitmap createQRCodeBitmap(String content, ImageView iv_view, Bitmap bm_icon,int width, int height, int margin) {// 字符串内容判空if (TextUtils.isEmpty(content)) {return null;}// 宽和高>=0if (width < 0 || height < 0) {return null;}try {/** 1.设置二维码相关配置 */Hashtable<EncodeHintType, String> hints = new Hashtable<>();// 字符转码格式设置hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");// 容错率设置hints.put(EncodeHintType.ERROR_CORRECTION, "H");// 空白边距设置hints.put(EncodeHintType.MARGIN, margin + "");/** 2.将配置参数传入到QRCodeWriter的encode方法生成BitMatrix(位矩阵)对象 */BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);bitMatrix = updateBit(bitMatrix, margin);width = bitMatrix.getWidth();height = bitMatrix.getHeight();/** 3.创建像素数组,并根据BitMatrix(位矩阵)对象为数组元素赋颜色值 */int[] pixels = new int[width * height];for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {//bitMatrix.get(x,y)方法返回true是黑色色块,false是白色色块if (bitMatrix.get(x, y)) {pixels[y * width + x] = 0xff000000;//黑色色块像素设置} else {pixels[y * width + x] = 0xffffffff;// 白色色块像素设置}}}/** 4.创建Bitmap对象,根据像素数组设置Bitmap每个像素点的颜色值,并返回Bitmap对象 */Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels, 0, width, 0, 0, width, height);//5,创建一个方法在二维码上添加一张图片Bitmap bitmapCode = addLogo(bitmap,bm_icon, 0.2f);if (bitmapCode != null && iv_view != null) {iv_view.setImageBitmap(bitmapCode);return bitmapCode;}iv_view.setImageBitmap(bitmapCode);return bitmap;} catch (WriterException e) {e.printStackTrace();return null;}}/*** 向二维码中间添加logo图片(图片合成)** @param srcBitmap 原图片(生成的简单二维码图片)* @param logoBitmap logo图片* @param logoPercent 百分比 (用于调整logo图片在原图片中的显示大小, 取值范围[0,1] )* @return*/private static Bitmap addLogo(Bitmap srcBitmap,  Bitmap logoBitmap, float logoPercent){if(srcBitmap == null){return null;}if(logoBitmap == null){return srcBitmap;}//传值不合法时使用0.2Fif(logoPercent < 0F || logoPercent > 1F){logoPercent = 0.2F;}/** 1. 获取原图片和Logo图片各自的宽、高值 */int srcWidth = srcBitmap.getWidth();int srcHeight = srcBitmap.getHeight();int logoWidth = logoBitmap.getWidth();int logoHeight = logoBitmap.getHeight();/** 2. 计算画布缩放的宽高比 */float scaleWidth = srcWidth * logoPercent / logoWidth;float scaleHeight = srcHeight * logoPercent / logoHeight;/** 3. 使用Canvas绘制,合成图片 */Bitmap bitmap = Bitmap.createBitmap(srcWidth, srcHeight, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);canvas.drawBitmap(srcBitmap, 0, 0, null);canvas.scale(scaleWidth, scaleHeight, srcWidth/2, srcHeight/2);canvas.drawBitmap(logoBitmap, srcWidth/2 - logoWidth/2, srcHeight/2 - logoHeight/2, null);return bitmap;}private static BitMatrix updateBit(BitMatrix matrix, int margin){int tempM = margin*2;int[] rec = matrix.getEnclosingRectangle();   //获取二维码图案的属性int resWidth = rec[2] + tempM;int resHeight = rec[3] + tempM;BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); // 按照自定义边框生成新的BitMatrixresMatrix.clear();for(int i= margin; i < resWidth- margin; i++){   //循环,将二维码图案绘制到新的bitMatrix中for(int j=margin; j < resHeight-margin; j++){if(matrix.get(i-margin + rec[0], j-margin + rec[1])){resMatrix.set(i,j);}}}return resMatrix;}

Androidstudio 扫码、生成二维码相关推荐

  1. Android扫一扫和生成二维码(使用华为ScanKit)

    本文主要讲如何使用华为统一扫码scan Kit进行扫一扫以及生成二维码, 有兴趣的可以看一下华为扫描和Zxing扫描的区别 使用步骤 1.在全局的build.gradle文件里添加华为maven仓库 ...

  2. android zxing扫码 生成二维码

    zxing 实现生成二维码,扫码 demo:https://download.csdn.net/download/chengtaoyan/11170917

  3. Android用Zxing扫二维码/生成二维码功能

    新年已过,一切恢复真正常,新的一年给自己几句指引: 光努力还不行,方向很重要. 总是想着最坏的结果,就会让人失去改变的勇气. 你当然有权利选择自己的人生--但只有在你真正强大后,逆行的阻力才会降到最小 ...

  4. 手机扫码+生成二维码

    手机生成二维码 安装npm地址 npm install qrcodejs2 --save 按需引入使用 vue文件 <template><div><van-button ...

  5. 条形码、二维码扫一扫和生成二维码采用ZXing3.0开源库在android studio中实现

    在开始之前先给各位上个运行效果图 二维码QRcode全称Quick Response Code 通过在一个矩形区域内使用黑白像素来进行编码 高纠错性.高可用性.高识别性 四周面有3个大的方框和一个小的 ...

  6. iOS中 扫描二维码/生成二维码详解

    最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 指示根视图: ? 1 self.window.rootViewController = [[UINav ...

  7. 【Unity】在Unity中实现扫描二维码 生成二维码功能

    在Unity中使用二维码扫描功能需要我们在Unty中导入扫描库 下载地址:https://github.com/micjahn/ZXing.Net/releases 然后编写扫描脚本: 先在脚本上添加 ...

  8. iOS-长按识别二维码/生成二维码/扫描二维码

    参考:http://www.jianshu.com/p/997cec333822 参考:https://github.com/nglszs/BCQRcode 方式一:长按识别二维码 #import & ...

  9. 扫描二维码 生成二维码

    1.导入依赖 allprojects {repositories {google()jcenter()maven {url 'https://jitpack.io'}} } implementatio ...

  10. HTML5实现扫描识别二维码/生成二维码

    扫描识别二维码 思路: 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源.  2. 利用canvas使用相关算法分析图片识别图 ...

最新文章

  1. Microsoft NLayerApp案例理论与实践 - 项目简“.NET研究”介与环境搭建
  2. php输出数据安行,PHP对文本数据库的基本操作方法
  3. QQ 邮箱的换肤 bug
  4. 诡异的DateTime.TryParseExact方法
  5. 谷歌浏览器检查更新时出错:无法启动更新检查(错误代码为 3: 0x80080005 -- system level)
  6. (计算机组成原理)第二章数据的表示和运算-第二节1:定点数的表示(原码、反码、补码和移码)
  7. 播放视频和音频文件java
  8. Jquery下的Ajax调试方法
  9. 在SQL Server 2000中使用Transact-SQL建立数据库
  10. SQL server 2008配置与用户名登录
  11. 植被抽稀lisp程序_地形图缩编中植被符号的抽稀方法
  12. 项目集锦 | 易基因近期m6A甲基化(MeRIP-seq)研究成果
  13. ceph HEALTH_WARN slow ops
  14. SAP BW顾问如何保持市场竞争力?【转自WKingChen的博客】
  15. 中国电子学会2022年09月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)
  16. python语音识别 开源_DaCiDian是一个开源的中文普通话词汇,用于自动语音识别(ASR)...
  17. 超适合新手练习的前端网页
  18. 「Python条件结构」嵌套if:实现奖学金评定
  19. 博客中可用的Emoji表情符号集,拿走不谢❤️❣️
  20. Window10家庭版启用远程桌面功能

热门文章

  1. python股权变动监控系统_最前线 | 中科院国产编程语言系Python套壳?负责人道歉并承认是二次开发...
  2. 使用随机梯度下降SGD的BP反向传播算法的PyTorch代码实现
  3. 无法启动IIS Express Web服务器 端口1025正在使用
  4. HarmonyOS什么时候上微内核,华为鸿蒙OS什么时候发售_华为鸿蒙harmonyOS上市时间_3DM手游...
  5. 了解Windows Vista内核的安全性
  6. 感恩节祝福html,感恩节祝福短信精选:富含诗意祝福短信
  7. 基于webrtc的p2p H265播放器实现二
  8. 【生活工作经验 三】天津学区买房初探
  9. Photoshop如何使用文字之实例演示?
  10. 一套鼠标操控多台电脑 微软自带 mouse without boarders