Android 实现ZXING扫描二维码功能
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扫描二维码功能相关推荐
- Android之ZXing扫描二维码以及生成二维码
Android之ZXing扫描二维码以及生成二维码 ZXIng项目地址:ZXing地址 项目结构 扫描二维码:使用 CaptureActivity类 项目代码: import android.cont ...
- Android 使用Zxing 扫描二维码 和生成二维码
6.1 二维码的使用场景及原理 概念:二维码又称 QR Code , QR 全称 Quick Response ,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存 ...
- Android快速实现扫描二维码功能
先去把工程文件下下载 github 然后找到lib-zxing这个文件夹 在AndroidStudio中导入模块 选择刚刚那个文件夹即可 把这些参数改成和工程一样即可然后开始编译 中间还处理一些imp ...
- 让你的APP轻松加上扫描二维码功能
在这个二维码横行的年代,如果一个APP连扫描二维码的功能都没有是会被耻笑的.今天小老虎教小白们如何为自己的APP添加扫描二维码功能和生成二维码,并做到外部扫描跳转网页,内部扫描跳转具体Activity ...
- Android之条码扫描二维码扫描
Android之条码扫描二维码扫描 二维码条形码扫描,参考技术网址: 1.Apache License 2.0 开源的 ZXing项目的简化版 http://xinlanzero.iteye.com/ ...
- Android使用ZBar扫描二维码/条形码(实例)+常见问题汇总
写在前面:因项目需求,需要实现二维码扫码功能,笔者测试过多种开源扫码工具,但因不跨平台.扫描速度慢等问题逐个放弃,最后选用ZBar实现功能,笔者发现ZBar扫码在跨主流手机平台.扫码速度等方面有较明显 ...
- SNF开发平台WinForm-平板拍照及扫描二维码功能
在我们做项目的时候,经常会有移动平板处理检验,审核等,方便移动办公.这时就需要在现场拍照上传问题,把当场问题进行上传,也有已经拍完照的图片或加工过的图片进行上传.还有在车间现场一体机,工控机 这种产物 ...
- 在js中调用微信的扫描二维码功能
在js中调用微信的扫描二维码功能* 关键代码 <html> <head>`在这里插入代码片`<title>js调用微信扫一扫功能测试</title>&l ...
- 在Vue中调用微信的扫描二维码功能
在Vue中调用微信的扫描二维码功能 步骤 新建vue文件(这里采用mint的标签库--就一个按钮~~) 关键代码 <template><div class="login_d ...
最新文章
- [译] 在 iOS 上使用 Carthage 建立依赖
- N4 接口解耦的可行性试验
- 全球及中国防褥疮充气垫行业投资前景展望与“十四五”发展规划建议报告2021年版
- principle导出html5,让Principle成为生产力工具(二)单页面中的联动
- ----------------学习进度表---------------------------------
- 笔记本能连上WIFI网络,但是无法上网怎么办
- STL训练 HDU - 1716 Ray又对数字的列产生了兴趣:
- BootStrap笔记-表格方面的配置
- GLEW_ERROR_NO_GL_VERSION的解决方法
- Linux系统C/C++通用错误码实现模板
- jQuery 事件的命名空间
- Windows下配置Nginx使之支持PHP(转)
- gbdt 算法比随机森林容易_机器学习军火库 | 浪漫算法 随机森林
- ASP.NET MVC搭建项目后台UI框架—1、后台主框架
- paip.TechExcel DevSuite IIS 根目录结构
- SQL中的Having与Where的区别(面试常问)
- 关于网络口碑研究小组
- 虚拟桌面基础架构 (VDI)及其工作原理
- 使用deno和oak开发的短链系统2.0
- Android仿腾讯手机管家实现桌面悬浮窗小火箭发射的动画效果
热门文章
- 手把手教你制作一款iOS越狱App,伪装微信位置
- 初次使用http打不开页面,使用https打开过后使用http协议又能正常访问
- 频率学派和贝叶斯学派的一些区别
- 如何辨别手机是行货,水货还是拼装手机
- springboot webjars
- ExpRe[30] Chrome[1] 更多生产力插件推荐
- OneDoc 开源文档管理系统搭建指南
- RecyclerView局部刷新机制
- [redhat 6.7+Mysql5.7] root权限丢失、降权恢复菜鸟教程
- 【有利可图网】PS实战系列:PS图层样式设计制作透明塑料质感字体效果