精华内容
参与话题
问答
  • android zxing

    2015-08-28 12:29:49
    如果你想直接使用编译好的jar包,那么直接去:http://repo1.maven.org/maven2/com/google/zxing/ 下载jar包即可
    如果你想直接使用编译好的jar包,那么直接去:http://repo1.maven.org/maven2/com/google/zxing/ 下载jar包即可
    
    展开全文
  • Android Zxing Demo

    千次下载 热门讨论 2015-05-28 14:17:20
    Android Zxing Demo
  • 超简单集成Android Zxing实现扫一扫二维码

    万次阅读 多人点赞 2016-10-13 10:54:35
    2017-10-20更新 最新版本的请看... ...因为按下文方法集成起来相对麻烦,所以就封了一下,放在github上了,需要的可以直接添加依赖,用起来简单很多。...推荐直接去gi...

    2017-10-20更新
    最新版本的请看 超简单一句话依赖使用二维码扫描,优化了扫描速度,修复了一些bug,增加了闪光灯,解析二维码图片,生成二维码等功能,简化了集成步骤。


    因为按下文方法集成起来相对麻烦,所以就封了一下,放在github上了,需要的可以直接添加依赖,用起来简单很多。

    推荐直接去github上添加依赖,更新了一些代码,修复了一些bug,比如扫描框变形的问题,添加了闪光灯.跟下面的方式相比较简化了很多步骤,直接一句话添加依赖后就可以使用了,觉得还行的话麻烦顶一下或点个star,谢谢,希望能帮到你。

    github地址

    如果上面的方式无法满足你的需求,需要自行修改样式和源码的,可以按照下面的方式去集成.


    扫一扫功能很多APP都有,Android的话一般都是集成Google–zxing库来实现。下面,我们将zxing集成到Android studio来实现扫一扫功能。
    首先,zxing的github地址:zxing—github

    集成步骤:
    1.首先新建工程,将targetSdkVersion改为22或22以下,因为扫描的时候需要调相机,6.0的话涉及到动态权限的问题,这里我直接以5.1的版本编译。省得麻烦。
    这里写图片描述

    2.下载jar包和要使用的代码文件
    code.jar

    将demo下载下来,把里面的zxing文件夹考到你的项目中,将资源文件也复制到你的项目中。
    demo

    3.将jar包放到libs目录下,右键Add As Library

    这里写图片描述

    将zxing目录粘贴到你的项目下,这里zixng中的一些类会报错,将R文件的引入删除,然后在重新引入你的项目中的R文件即可。
    这里写图片描述

    4.记得别忘了将资源文件也粘贴到你的项目中
    这里要注意把capture.xml的ViewfinderView改成你自己包名下的。

    这里写图片描述

    四个步骤:

    这里写图片描述

    完成上述步骤后,基本上算是大功搞成了,接下来就是很简单的实现了

    简单实现:
    MainActivity中很简单:一个Button,一个TextView
    点击Button扫面,将扫面结果显示到TextView上

    这里写图片描述

    5.MainActivity中
    这里写图片描述

    6.记得加上权限,声明Activity。
    这里写图片描述

    7.运行结果图示
    这里写图片描述

    8.ok,完成!希望能帮到你们

    demo

    说明: 我一开始demo分数是1分,后来csdn自己把分涨上去了,我也很无奈啊。没有积分的同学建议去文章开头给的Github地址去免费获取最新版。觉得还可以的记得点个star,谢谢。


    如果你觉得本文对你有帮助,麻烦动动手指顶一下,算是对本文的一个认可。对Flutter有兴趣的话可以关注我的 Flutter 博客专栏,我会不定期的更新,如果文中有什么错误的地方,还望指正,谢谢!

    展开全文
  • Android ZXing 解析

    万次阅读 热门讨论 2016-03-22 11:45:35
    参考: http://blog.csdn.net/eclipsexys/article/details/47834865 ...扫描截取界面的计算ZXingZXing作者的github地址: https://github.com/zxing/zxing通过git clone git@git

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/50952856 文章出自:薛瑄的博客

    你也可以查看我的其他同类文章,也会让你有一定的收货!

    ZXing

    ZXing是由谷歌开发的一款二维码扫描工具
    官方github地址: https://github.com/zxing/zxing

    这个工程包含很多项目,这里主要说一下android方面的。在工程中的android 项目依赖core项目 和android-core项目

    core项目

    android-core项目

    这个项目中只有一个CameraConfigurationUtils类,主要是配置摄像头的一些参数,可以手动合并到android项目中

    android项目

    1. 在这个工程中android项目也是使用maven构建的,Android Studio 中的项目是使用gradle构建的,使用file->new ->import project 导入项目,AS可以自动转换为gradle。

    2. 导入core项目的jar包,

    3. 导入android-core项目CameraConfigurationUtils类

    至此就可以打包apk了

    简化ZXing中的Android 项目

    官方android项目,包含了剪切板,扫描历史,分享,扫描二维码,等等。
    如果只使用扫码功能,需要剔除其他的功能,这里为大家提供一个封装好精简的ZXing Lib:

    https://github.com/JantHsueh/ZxingAndroid

    基于ZXing3.1封装,包含了最新的jar包和代码。

    clone 项目。并导入AS后:
    这里写图片描述

    这里写图片描述

    原版和简化版本共有类解析

    CaptureActivity

    • 原版本:ZXing的主Activity。ZXing启动后执行CaptureActivity,在handleDecode()方法中对扫码成功后的动作作处理。

    • 简化后:主Activity是MainActivity,分别有扫描二维码和生成二维码,单击扫描二维码,也是执行CaptureActivity在handleDecode()方法中对扫码成功后的动作作处理。

    ViewfinderView

    • 原版本:ZXing扫码窗口的绘制,可以在这个类中改变原版扫描窗口的界面

    • 简化后:ZXing扫码窗口,集成到了CaptureActivity中,抽取到了XML文件中,这样修改起来更加方便了。

    CameraConfigurationManager

    该类主要负责设置相机的参数信息,获取最佳的预览界面。修改横竖屏、处理变形效果的核心类。

    1、public void setDesiredCameraParameters(Camera camera, boolean safeMode)方法中(读取配置设置相机的对焦模式、闪光灯模式等等),可以将扫描改为竖屏:

    在方法最后加上:

    /** 设置相机预览为竖屏 */
    camera.setDisplayOrientation(90);

    2、在public void initFromCameraParameters(Camera camera)方法中(计算了屏幕分辨率和当前最适合的相机像素),我们可以对修改为竖屏扫码后,由于像素信息点没有对调造成图像扭曲变形进行修改。

    在Log.d(TAG, “Screen resolution: ” + screenResolution);后加上如下的代码:

    /** 因为换成了竖屏显示,所以不替换屏幕宽高得出的预览图是变形的 */
    Point screenResolutionForCamera = new Point();
    screenResolutionForCamera.x = screenResolution.x;
    screenResolutionForCamera.y = screenResolution.y;
    
    if (screenResolution.x < screenResolution.y) {
        screenResolutionForCamera.x = screenResolution.y;
        screenResolutionForCamera.y = screenResolution.x;
    }

    将screenResolution替换为screenResolutionForCamera:

    cameraResolution = findBestPreviewSizeValue(parameters, screenResolutionForCamera);

    DecodeHandler.decode

    ZXing解码的核心类

    CaptureActivityHandler

    当DecodeHandler.decode完成解码后,系统会向CaptureActivityHandler发消息。如果编码成功则调用CaptureActivity.handleDecode方法对扫描到的结果进行分类处理。

    简化版本分析

    MainActivity 主Activity

    public class MainActivity extends Activity {
    
        private TextView resultTextView;
        private EditText qrStrEditText;
        private ImageView qrImgImageView;
        private CheckBox mCheckBox;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            resultTextView = (TextView) this.findViewById(R.id.tv_scan_result);
            qrStrEditText = (EditText) this.findViewById(R.id.et_qr_string);
            qrImgImageView = (ImageView) this.findViewById(R.id.iv_qr_image);
            mCheckBox = (CheckBox) findViewById(R.id.logo);
    
            //扫描二维码按钮
            Button scanBarCodeButton = (Button) this.findViewById(R.id.btn_scan_barcode);
            scanBarCodeButton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    //打开扫描界面扫描条形码或二维码
                    Intent openCameraIntent = new Intent(MainActivity.this, CaptureActivity.class);
                    startActivityForResult(openCameraIntent, 0);
                }
            });
    
            //生成二维码按钮
            Button generateQRCodeButton = (Button) this.findViewById(R.id.btn_add_qrcode);
            generateQRCodeButton.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    String contentString = qrStrEditText.getText().toString();
                    if (!contentString.equals("")) {
                        //根据字符串生成二维码图片并显示在界面上,第二个参数为图片的大小(350*350)
                        Bitmap qrCodeBitmap = EncodingUtils.createQRCode(contentString, 350, 350,
                                mCheckBox.isChecked() ?
                                        BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher) :
                                        null);
                        qrImgImageView.setImageBitmap(qrCodeBitmap);
                    } else {
                        Toast.makeText(MainActivity.this, "Text can not be empty", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    
    
        //扫描二维码,返回的结果
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == RESULT_OK) {
                Bundle bundle = data.getExtras();
                String scanResult = bundle.getString("result");
                resultTextView.setText(scanResult);
            }
        }
    }
    

    扫描截取界面的计算

    因为在通过相机预览画面识别二维码时,需要知道二维码在相机预览画面中的位置,就会有这么一个问题:相机的分辨率和屏幕的分辨率不一样,怎么使屏幕中显示的扫描框,就是相机所捕捉的扫描框??

    解决思路也很简单,按照比例去计算,相机预览画面尺寸/屏幕布局尺寸= 相机预览画面二维码位置/屏幕布局扫描框位置

    这里写图片描述

    pt:预览图中二维码图片的左上顶点坐标,也就是手机中相机预览中看到的待扫描二维码的位置
    qrheight:预览图中二维码图片的高度
    qrwidth:预览图中二维码图片的宽度
    pheight:预览图的高度,也即camera的分辨率高度
    pwidth:预览图的宽度,也即camera的分辨率宽度

    st:布局文件中扫描框的左上顶点坐标
    sheight:布局文件中扫描框的高度
    swidth:布局文件中扫描框的宽度
    cheight:布局文件中相机预览控件的高度
    cwidth:布局文件中相机预览控件的宽度

    存在下面的等比公式:

    ptx / pwidth = stx / cwidth ;
    pty / pheight = sty / cheight ;
    qrwidth / pwidth = swidth / cwidth ;
    qrheight / pheight = sheight / cheight ;

    确定相机中捕捉的扫描框大小和尺寸:

    ptx = stx * pwidth / cwidth ;
    pty = sty * pheight / cheight ;
    qrwidth = swidth * pwidth / cwidth ;
    qrheight = sheight * pheight / cheight ;
    

    CaptureActivity类

    熟悉这个类中几个函数的使用,可以自由使用ZXing功能,改变UI

    Android 状态栏、标题栏、屏幕高度、横竖屏

    public final class CaptureActivity extends Activity implements SurfaceHolder.Callback {
    
        private static final String TAG = CaptureActivity.class.getSimpleName();
    
        private CameraManager cameraManager;
        private CaptureActivityHandler handler;
        private InactivityTimer inactivityTimer;
        private BeepManager beepManager;
    
        private SurfaceView scanPreview = null;
        private RelativeLayout scanContainer;
        private RelativeLayout scanCropView;
        private ImageView scanLine;
    
        private Rect mCropRect = null;
        private boolean isHasSurface = false;
    
        public Handler getHandler() {
            return handler;
        }
    
        public CameraManager getCameraManager() {
            return cameraManager;
        }
    
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
    
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            setContentView(R.layout.activity_capture);
            //获得UI控件
            scanPreview = (SurfaceView) findViewById(R.id.capture_preview);
            scanContainer = (RelativeLayout) findViewById(R.id.capture_container);
            scanCropView = (RelativeLayout) findViewById(R.id.capture_crop_view);
            scanLine = (ImageView) findViewById(R.id.capture_scan_line);
    
            //结束闲置一段时间的activity,如果这个设备时电池供电
            inactivityTimer = new InactivityTimer(this);
            //蜂鸣器
            beepManager = new BeepManager(this);
    
    
            //扫描动画
            TranslateAnimation animation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation
                    .RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT,
                    0.9f);
             //动画持续的时间
            animation.setDuration(4500);
            //动画重复的此时
            animation.setRepeatCount(-1);
            //动画如何重复,从下到上,还是重新开始从上到下
            animation.setRepeatMode(Animation.RESTART);
    
            scanLine.startAnimation(animation);
        }
    
        @Override
        protected void onResume() {
            super.onResume();
         // 下面这句是我自行加入的,在原作者的代码中,转动屏幕,出现崩溃,所以使用下面这条语句,固定屏幕方向为竖屏
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    
            // CameraManager must be initialized here, not in onCreate(). This is
            // necessary because we don't
            // want to open the camera driver and measure the screen size if we're
            // going to show the help on
            // first launch. That led to bugs where the scanning rectangle was the
            // wrong size and partially
            // off screen.
            cameraManager = new CameraManager(getApplication());
    
            handler = null;
    
            if (isHasSurface) {
                // The activity was paused but not stopped, so the surface still
                // exists. Therefore
                // surfaceCreated() won't be called, so init the camera here.
                initCamera(scanPreview.getHolder());
            } else {
                // Install the callback and wait for surfaceCreated() to init the
                // camera.
                scanPreview.getHolder().addCallback(this);
            }
    
            inactivityTimer.onResume();
        }
    
        @Override
        protected void onPause() {
            if (handler != null) {
                handler.quitSynchronously();
                handler = null;
            }
            inactivityTimer.onPause();
            beepManager.close();
            cameraManager.closeDriver();
            if (!isHasSurface) {
                scanPreview.getHolder().removeCallback(this);
            }
            super.onPause();
        }
    
        @Override
        protected void onDestroy() {
            inactivityTimer.shutdown();
            super.onDestroy();
        }
    
        //实现SurfaceHolder.Callback,需要实现下面三个函数
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            if (holder == null) {
                Log.e(TAG, "*** WARNING *** surfaceCreated() gave us a null surface!");
            }
            if (!isHasSurface) {
                isHasSurface = true;
                initCamera(holder);
            }
        }
    
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            isHasSurface = false;
        }
    
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    
        }
    
        /**
         * A valid barcode has been found, so give an indication of success and show the results.
         * 扫描完后的结果在这个函数处理
         * @param rawResult The contents of the barcode.
         * @param bundle    The extras
         */
        public void handleDecode(Result rawResult, Bundle bundle) {
            inactivityTimer.onActivity();
            beepManager.playBeepSoundAndVibrate();
    
            Intent resultIntent = new Intent();
            bundle.putInt("width", mCropRect.width());
            bundle.putInt("height", mCropRect.height());
            bundle.putString("result", rawResult.getText());
            resultIntent.putExtras(bundle);
            this.setResult(RESULT_OK, resultIntent);
            CaptureActivity.this.finish();
        }
    
       //初始化摄像机
        private void initCamera(SurfaceHolder surfaceHolder) {
            if (surfaceHolder == null) {
                throw new IllegalStateException("No SurfaceHolder provided");
            }
            if (cameraManager.isOpen()) {
                Log.w(TAG, "initCamera() while already open -- late SurfaceView callback?");
                return;
            }
            try {
                //设置取景的使用哪个surfaceView来取景
                cameraManager.openDriver(surfaceHolder);
                // Creating the handler starts the preview, which can also throw a
                // RuntimeException.
                if (handler == null) {
                    //这个类处理所有包括状态机捕获的消息。
                    handler = new CaptureActivityHandler(this, cameraManager, DecodeThread.ALL_MODE);
                }
                //初始化截取的矩形区域
                initCrop();
            } catch (IOException ioe) {
                Log.w(TAG, ioe);
                displayFrameworkBugMessageAndExit();
            } catch (RuntimeException e) {
                // Barcode Scanner has seen crashes in the wild of this variety:
                // java.?lang.?RuntimeException: Fail to connect to camera service
                Log.w(TAG, "Unexpected error initializing camera", e);
                displayFrameworkBugMessageAndExit();
            }
        }
    
        private void displayFrameworkBugMessageAndExit() {
            // camera error
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle(getString(R.string.app_name));
            builder.setMessage("Camera error");
            builder.setPositiveButton("OK", new           DialogInterface.OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
    
            });
            builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
    
                @Override
                public void onCancel(DialogInterface dialog) {
                    finish();
                }
            });
            builder.show();
        }
    
        public void restartPreviewAfterDelay(long delayMS) {
            if (handler != null) {
                handler.sendEmptyMessageDelayed(R.id.restart_preview, delayMS);
            }
        }
    
        public Rect getCropRect() {
            return mCropRect;
        }
    
        /**
         * 初始化截取的矩形区域
         */
        private void initCrop() {
            int cameraWidth = cameraManager.getCameraResolution().y;
            int cameraHeight = cameraManager.getCameraResolution().x;
    
            /** 获取布局中扫描框的位置信息 */
            int[] location = new int[2];
            scanCropView.getLocationInWindow(location);
    
            int cropLeft = location[0];
            int cropTop = location[1] - getStatusBarHeight();
    
            int cropWidth = scanCropView.getWidth();
            int cropHeight = scanCropView.getHeight();
    
            /** 获取布局容器的宽高 */
            int containerWidth = scanContainer.getWidth();
            int containerHeight = scanContainer.getHeight();
    
            /** 计算最终截取的矩形的左上角顶点x坐标 */
            int x = cropLeft * cameraWidth / containerWidth;
            /** 计算最终截取的矩形的左上角顶点y坐标 */
            int y = cropTop * cameraHeight / containerHeight;
    
            /** 计算最终截取的矩形的宽度 */
            int width = cropWidth * cameraWidth / containerWidth;
            /** 计算最终截取的矩形的高度 */
            int height = cropHeight * cameraHeight / containerHeight;
    
            /** 生成最终的截取的矩形 */
            mCropRect = new Rect(x, y, width + x, height + y);
        }
    
    
        //获取状态条的高度
        private int getStatusBarHeight() {
            try {
                Class<?> c = Class.forName("com.android.internal.R$dimen");
                Object obj = c.newInstance();
                Field field = c.getField("status_bar_height");
                int x = Integer.parseInt(field.get(obj).toString());
                return getResources().getDimensionPixelSize(x);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return 0;
        }
    }

    至于更深层次的如何处理扫描的结果,图形处理等等,就不深究了,我的水平有限。这些代码都在core项目中

    demo地址:https://github.com/JantHsueh/ZxingAndroid

    参考:
    通过ZXing获取静态二维码图片结果:http://blog.csdn.net/luzhenyuxfcy/article/details/50475670
    http://blog.csdn.net/eclipsexys/article/details/47834865
    http://blog.csdn.net/xiaanming/article/details/10163203
    扫描截取界面的计算

    关注我的公众号,轻松了解和学习更多技术
    这里写图片描述

    展开全文
  • android zxing二维码demo

    2019-02-19 13:54:57
    android二维码xzing使用,扫描生成返回数据和点击照片扫描生成文字!输入文字等内容生成二维码
  • 主要给大家介绍了关于Android zxing如何识别反转二维码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Android Zxing包 调用手机摄像头去进行条码扫描。目前我只试了一维码和二维码。
  • Android Zxing集成

    千次阅读 2018-12-05 00:22:09
    集成Zxing二维码扫描 首先从github上找到zxing,然后下载 然后这里面是没有jar包的,所含有的jar包可以继续下拉,找到这个...将下载的Android文件夹导入 然后修改名称 导入进去的module是以app形式存在的,所需要将m...

    集成Zxing二维码扫描
    首先从github上找到zxing,然后下载
    在这里插入图片描述

    在这里插入图片描述

    然后这里面是没有jar包的,所含有的jar包可以继续下拉,找到这个
    在这里插入图片描述
    点击进入网址
    在这里插入图片描述
    从这里面就可以找到所需要的jar包,如果这都还找不到,请花几个积分去其他地方下载吧!
    然后集成的文档就全部准备完毕,下面开始集成
    在这里插入图片描述

    将下载的Android文件夹导入
    在这里插入图片描述
    然后修改名称
    在这里插入图片描述
    导入进去的module是以app形式存在的,所需要将module里面的gradle文件中的apply更改成library
    在这里插入图片描述
    然后这个module就更改成了一个library,当然,你需要处理一下过程中存在的报错,比如资源文件或者core.jar没有添加进去等,这些都是小问题啦!
    然后到开发的app项目中将这个库引入

    在这里插入图片描述
    到这里,我们就集成好了Zxing
    然后我们用一个activity跳转到开启二维码扫描的界面
    在这里插入图片描述
    这里在布局页面添加一个button,设置点击事件,跳转到CaptureActivity(这是zxingdemo中开启扫描的)
    由于我这里的版本在6.0以上,所以我们在打开相机之前需要动态的给它开启权限
    当然权限也要在manifest文件中写上,否则一样无法通过权限申请
    下面是运行结果
    在这里插入图片描述

    如果出现下面这种情况
    在这里插入图片描述
    那是由于zxing原本是一个app形式存在的,他也是有一个主Activity来打开,所以需要将它里面的设置为MainActivity的删除
    在这里插入图片描述

    然后就可以在项目中进行对zxing的自定义操作了

    展开全文
  • Android zxing学习

    2018-11-06 17:07:08
    最近在学习 zxing ,发现了几篇不错的文章: 转载: zxing学习笔记(共六篇) zxing的逻辑梳理 直接接入zxing插件实现二维码扫描功能 如果要修改 ViewfinderView (扫描框)的大小,只要修改 CameraManager....
  • Android ZXing 二维码

    千次阅读 2013-10-09 17:48:38
    今天介绍另外一种实现二维码功能的库ZXing,首先下载ZXing资源https://code.google.com/p/zxing/downloads/detail?name=ZXing-2.2.zip;再下载core-*.*.jar库http://repo1.maven.org/maven2/com/google/zxing/core/...
  • 主要为大家分享了Android Zxing生成二维码经典案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • zxing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的接口;可以实现使用手机的内置的摄像头完成条形码和二维码的扫描与解码;也可以实现条形码和二维码的编码与解码。
  • Android-related code shared among android, other Android apps zxingorg The source behind zxing.org zxing.appspot.com The source behind web-based barcode generator at zxing.appspot.com ...
  • 最新的Java平台二维码开发工具ZXing3.2.1 JavaSE编译后jar包,结合ZXing Core核心包使用,ZXing3.2.1 Core核心包已上传。
  • Android zxing持续扫码,不返回上一页。由于功能需求,要在扫码页面持续扫描条码,所以要是返回上一页会影响不好,修改zxing的CaptureManager,使其不要返回上一页。
  • Android zxing包.jar.zip

    2020-09-17 17:47:57
    Android zxing包,用于 二维码扫码等等功能 免积分!
  • Android zxing2.3 + core.jar 注:只保留二维码扫描部分,也就是说此乃精简版 友情提示:使用高版本zxing生成的二维码,用低版本的zxing扫描貌似不识别。zxing2.3对于点版本的Android系统貌似不支持(暂且知道2.2 ...
  • zxing 实现二维码扫描 从相册获取二维码识别,部分机型有存储权限需自己做一下处理,闪光灯,以及集成了zxing的库,可自己直接引用生成等操作,
  • 主要为大家详细介绍了Android Zxing二维码扫描图片拉伸的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 个人做二维码扫描,觉得效果还不错,留存以后用
  • Android zxing二维码扫描个人优化版的优化,增加了横竖屏、前后置摄像头的配置,配置文件QRCodeSConfig.java,使用的是zxing3.2.0版本。手机和平板测试都没问题。

空空如也

1 2 3 4 5 ... 20
收藏数 3,499
精华内容 1,399
关键字:

android zxing