zoukankan      html  css  js  c++  java
  • 二维码扫码

    先给大家来个效果图,下面附加代码、资源文件、和Demo:

    1、资源文件下载

    2、资源文件应用

    3、AndroidManifest.xml权限

    4、MainActivity代码

    5、MainActivity的布局文件代码

    6、附加Demo

    资源文件下载(点击下载,提取码:2laf)

    获取到的文件截图(里面包含7个文件):

     资源文件应用:

    1.zxing类放在项目中的java下面(如下图):

    2.zxing文件下面的类代码引入路径可能跟你的不一样所以要看看

    3.除了values中的文件,其他的都可以直接复制进去,values文件要进到里面复制代码,直接替换会换掉你之前的样式

    4.libs文件加入后,记得引入“coere-3.0.0.jar”文件

    5.layout下面的capture.xml布局文件中的扫描取景框(ViewfinderView)控件改为自己包名下的路径

    6.在AndroidManifest.xml文件中加入扫描的Activity

    <activity
                android:name="com.example.qrcode.zxing.android.CaptureActivity"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.NoTitleBar" />
    

    AndroidManifest.xml权限(加入以下权限):

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

     MainActivity代码:

    package com.example.qrcode;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.app.ActivityCompat;
    import androidx.core.content.ContextCompat;
    
    import android.Manifest;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.example.qrcode.zxing.android.CaptureActivity;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
        private static final String DECODED_CONTENT_KEY = "codedContent";
        private static final String DECODED_BITMAP_KEY = "codedBitmap";
        private static final int REQUEST_CODE_SCAN = 0x0000;
        private Button btnCode;
        private TextView textData;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        private void initView(){
            btnCode = (Button)findViewById(R.id.btnCode);
            textData = (TextView)findViewById(R.id.textData);
            btnCode.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View view) {
            //动态权限申请
            if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 1);
            } else {
                goScan(); //扫码
            }
        }
    
        //跳转到扫码页面
        private void goScan(){
            Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
            startActivityForResult(intent,REQUEST_CODE_SCAN);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            //扫描二维码、条码回转
            if(requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK){
                if(!data.toString().isEmpty()){
                    String content = data.getStringExtra(DECODED_CONTENT_KEY); //返回的文本内容
                    btnCode.setVisibility(View.GONE); //隐藏按钮
                    textData.setText(content); //设置返回的值在文本中
                    Bitmap bitmap = data.getParcelableExtra(DECODED_BITMAP_KEY);
                }
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            switch (requestCode) {
                case 1:
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        goScan(); //扫码
                    } else {
                        Toast.makeText(this, "您拒绝了权限申请,可能无法打开相机扫码", Toast.LENGTH_SHORT).show();
                    }
                    break;
                default:
            }
        }
    }
    

     MainActivity的布局文件代码:

    <?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:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="20dp"
        android:gravity="center_vertical|center_horizontal"
        tools:context=".MainActivity">
    
        <Button
            android:id="@+id/btnCode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点击扫码"/>
        <TextView
            android:id="@+id/textData"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    

     附加Demo(点我下载,提取码:3fcb)

    二维码案例就到这里了,如果有什么疑问的话可以给我留言。

    感觉还不错的话就给博主赏杯咖啡(上面的效果图中的二维码就是博主的微信收款码),谢谢大家!!!

  • 相关阅读:
    图片预览神器
    近期错题总结
    鬼谷子的钱袋(lgP2320)
    小明的账单
    合并果子(lgP1090)
    看病
    稀有矿井
    舞会(lgP1352)
    三国风云
    天上掉 Pizza
  • 原文地址:https://www.cnblogs.com/Mr-Deng/p/11466763.html
Copyright © 2011-2022 走看看