二维码扫码

先给大家来个效果图,下面附加代码、资源文件、和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)

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

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

posted @ 2019-09-05 16:15  蒜香小龙虾  阅读(327)  评论(0编辑  收藏  举报