当前位置: 首页 > news >正文

android 扫描二维码

1.在你的build.gradle文件中添加Mobile Vision库的依赖:

dependencies {implementation 'com.google.android.gms:play-services-vision:20.1.0'
}

2.创建一个新的Activity来处理扫描过程。

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.vision.barcode.BarcodeReader;
import com.google.android.gms.vision.CameraSource;
import com.google.android.gms.vision.barcode.Barcode;
import android.util.SparseArray;
import com.google.android.gms.vision.Detector;
import android.view.SurfaceHolder;
import android.view.SurfaceView;public class QRCodeScannerActivity extends AppCompatActivity {private SurfaceView cameraPreview;private CameraSource cameraSource;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_qrcode_scanner);cameraPreview = findViewById(R.id.camera_preview);BarcodeReader barcodeReader = new BarcodeReader.Builder(this).build();cameraSource = new CameraSource.Builder(this, barcodeReader).setFacing(CameraSource.CAMERA_FACING_BACK).setRequestedPreviewSize(1600, 1024).setAutoFocusEnabled(true).build();cameraPreview.getHolder().addCallback(new SurfaceHolder.Callback() {@Overridepublic void surfaceCreated(SurfaceHolder holder) {if (ContextCompat.checkSelfPermission(QRCodeScannerActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {try {cameraSource.start(cameraPreview.getHolder());} catch (IOException e) {e.printStackTrace();}}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {cameraSource.stop();}});barcodeReader.setProcessor(new Detector.Processor<Barcode>() {@Overridepublic void release() {}@Overridepublic void receiveDetections(Detector.Detections<Barcode> detections) {final SparseArray<Barcode> qrCodes = detections.getDetectedItems();if (qrCodes.size() != 0) {Barcode barcode = qrCodes.valueAt(0);String scannedQRCode = barcode.displayValue;// Handle the scanned code as needed}}});}@Overrideprotected void onDestroy() {super.onDestroy();cameraSource.release();}
}

3.确保你的AndroidManifest.xml文件中添加了相应的权限

<uses-permission android:name="android.permission.CAMERA" />

http://www.lryc.cn/news/332330.html

相关文章:

  • [flink 实时流基础] 输出算子(Sink)
  • case语句
  • 全国加油站分布数据/停车场分布/公园分布/景区分布/保护区分布/poi感兴趣点
  • 单片机简介(一)
  • Naiveui将message挂载到axios拦截器
  • MySQL、Oracle查看字节和字符长度个数的函数
  • 第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》
  • ES6: class类
  • [中级]软考_软件设计_计算机组成与体系结构_08_输入输出技术
  • 2024-04-04 问AI: 在深度学习中,微调是什么?
  • db2数据仓库集群的搭建
  • Linux ARM平台开发系列讲解(u-boot篇) 5.1 u-boot的启动流程分析(ARMv8-a)
  • ST表(数据结构中的问题)
  • 一、OpenCV(C#版本)环境搭建
  • ubuntu远程服务部署,Docker,蓝牙无线局域网,SSH,VNC,xfce4,NextTerminal,宝塔,NPS/NPC,gost,openwrt
  • kettle安装与部署使用教程
  • 【C语言】编译和链接
  • Python学习: 错误和异常
  • WebGIS 之 vue3+vite+ceisum
  • ## CSDN创作活动:AI技术创业有哪些机会?
  • 中医肝胆笔记
  • 理解Go语言中break语句是如何工作的
  • 11. 瀑布流布局
  • Flutter-发布插件到pub上传不上问题
  • Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT
  • c++的学习之路:12、vector(1)
  • 2024.2.17力扣每日一题——N叉树的层序遍历
  • 滑动窗口(尺取法/Python)
  • 【打印SQL执行日志】⭐️Mybatis-Plus通过配置在控制台打印执行日志
  • Vue后台管理系统常用组件的优缺点分析