1.在build.gradle加入依赖:

    implementation 'com.journeyapps:zxing-android-embedded:4.3.0'

2.CaptureActivity

package com.example.zxingdemo;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;import android.annotation.SuppressLint;
import android.view.KeyEvent;import androidx.annotation.NonNull;import com.journeyapps.barcodescanner.CaptureManager;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;public class CaptureActivity extends AppCompatActivity {private CaptureManager capture;private DecoratedBarcodeView barcodeScannerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_capture);// 自定义布局barcodeScannerView = (DecoratedBarcodeView) findViewById(R.id.dbv_custom);capture = new CaptureManager(this, barcodeScannerView);capture.initializeFromIntent(getIntent(), savedInstanceState);capture.decode();}@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);}@SuppressLint("MissingSuperCall")@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);}
}

3.activity_capture.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:orientation="vertical"><com.journeyapps.barcodescanner.DecoratedBarcodeViewandroid:id="@+id/dbv_custom"android:layout_width="match_parent"android:layout_height="fill_parent"android:layout_marginTop="10dp"android:layout_marginLeft="5dp"android:layout_marginRight="5dp"android:layout_marginBottom="10dp"app:zxing_preview_scaling_strategy="fitXY" /></LinearLayout>

4.MainActivity

package com.example.zxingdemo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.content.Intent;import android.util.Log;
import android.widget.Button;
import android.widget.TextView;import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;public class MainActivity extends AppCompatActivity {private TextView tvMsg;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btnScan).setOnClickListener(view -> initScan());tvMsg = (TextView) this.findViewById(R.id.tvMsg);}public void initScan() {IntentIntegrator integrator = new IntentIntegrator(this);// 设置要扫描的条码类型,ONE_D_CODE_TYPES:一维码,QR_CODE_TYPES-二维码integrator.setDesiredBarcodeFormats();integrator.setCaptureActivity(CaptureActivity.class); //设置打开摄像头的Activityintegrator.setPrompt("请将摄像头对准"); //底部的提示文字,设为""可以置空integrator.setCameraId(0); //前置或者后置摄像头integrator.setBeepEnabled(true); //扫描成功的「哔哔」声,默认开启integrator.setBarcodeImageEnabled(true);integrator.initiateScan();}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {super.onActivityResult(requestCode, resultCode, intent);if (requestCode == IntentIntegrator.REQUEST_CODE) {IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);if (scanResult != null && scanResult.getContents() != null) {String result = scanResult.getContents();Log.d("扫码返回: ", result);tvMsg.setText(result);}}}
}

5.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/LinearLayout1"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tvMsg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:text="Hello World!" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:id="@+id/btnScan"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="扫描" /></LinearLayout></LinearLayout>

6.AndroidManifest增加权限:

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

Android 实现ZXING扫描二维码功能相关推荐

  1. Android之ZXing扫描二维码以及生成二维码

    Android之ZXing扫描二维码以及生成二维码 ZXIng项目地址:ZXing地址 项目结构 扫描二维码:使用 CaptureActivity类 项目代码: import android.cont ...

  2. Android 使用Zxing 扫描二维码 和生成二维码

    6.1 二维码的使用场景及原理 概念:二维码又称 QR Code , QR 全称 Quick Response ,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存 ...

  3. Android快速实现扫描二维码功能

    先去把工程文件下下载 github 然后找到lib-zxing这个文件夹 在AndroidStudio中导入模块 选择刚刚那个文件夹即可 把这些参数改成和工程一样即可然后开始编译 中间还处理一些imp ...

  4. 让你的APP轻松加上扫描二维码功能

    在这个二维码横行的年代,如果一个APP连扫描二维码的功能都没有是会被耻笑的.今天小老虎教小白们如何为自己的APP添加扫描二维码功能和生成二维码,并做到外部扫描跳转网页,内部扫描跳转具体Activity ...

  5. Android之条码扫描二维码扫描

    Android之条码扫描二维码扫描 二维码条形码扫描,参考技术网址: 1.Apache License 2.0 开源的 ZXing项目的简化版 http://xinlanzero.iteye.com/ ...

  6. Android使用ZBar扫描二维码/条形码(实例)+常见问题汇总

    写在前面:因项目需求,需要实现二维码扫码功能,笔者测试过多种开源扫码工具,但因不跨平台.扫描速度慢等问题逐个放弃,最后选用ZBar实现功能,笔者发现ZBar扫码在跨主流手机平台.扫码速度等方面有较明显 ...

  7. SNF开发平台WinForm-平板拍照及扫描二维码功能

    在我们做项目的时候,经常会有移动平板处理检验,审核等,方便移动办公.这时就需要在现场拍照上传问题,把当场问题进行上传,也有已经拍完照的图片或加工过的图片进行上传.还有在车间现场一体机,工控机 这种产物 ...

  8. 在js中调用微信的扫描二维码功能

    在js中调用微信的扫描二维码功能* 关键代码 <html> <head>`在这里插入代码片`<title>js调用微信扫一扫功能测试</title>&l ...

  9. 在Vue中调用微信的扫描二维码功能

    在Vue中调用微信的扫描二维码功能 步骤 新建vue文件(这里采用mint的标签库--就一个按钮~~) 关键代码 <template><div class="login_d ...

最新文章

  1. [译] 在 iOS 上使用 Carthage 建立依赖
  2. N4 接口解耦的可行性试验
  3. 全球及中国防褥疮充气垫行业投资前景展望与“十四五”发展规划建议报告2021年版
  4. principle导出html5,让Principle成为生产力工具(二)单页面中的联动
  5. ----------------学习进度表---------------------------------
  6. 笔记本能连上WIFI网络,但是无法上网怎么办
  7. STL训练 HDU - 1716 Ray又对数字的列产生了兴趣:
  8. BootStrap笔记-表格方面的配置
  9. GLEW_ERROR_NO_GL_VERSION的解决方法
  10. Linux系统C/C++通用错误码实现模板
  11. jQuery 事件的命名空间
  12. Windows下配置Nginx使之支持PHP(转)
  13. gbdt 算法比随机森林容易_机器学习军火库 | 浪漫算法 随机森林
  14. ASP.NET MVC搭建项目后台UI框架—1、后台主框架
  15. paip.TechExcel DevSuite IIS 根目录结构
  16. SQL中的Having与Where的区别(面试常问)
  17. 关于网络口碑研究小组
  18. 虚拟桌面基础架构 (VDI)及其工作原理
  19. 使用deno和oak开发的短链系统2.0
  20. Android仿腾讯手机管家实现桌面悬浮窗小火箭发射的动画效果

热门文章

  1. 手把手教你制作一款iOS越狱App,伪装微信位置
  2. 初次使用http打不开页面,使用https打开过后使用http协议又能正常访问
  3. 频率学派和贝叶斯学派的一些区别
  4. 如何辨别手机是行货,水货还是拼装手机
  5. springboot webjars
  6. ExpRe[30] Chrome[1] 更多生产力插件推荐
  7. OneDoc 开源文档管理系统搭建指南
  8. RecyclerView局部刷新机制
  9. [redhat 6.7+Mysql5.7] root权限丢失、降权恢复菜鸟教程
  10. 【有利可图网】PS实战系列:PS图层样式设计制作透明塑料质感字体效果