Android studio enables mobile phone to scan QR code

Android mobile phone version needs to dynamically obtain camera permissions after 6.0

1. Obtain camera permission

<!-- 获取手机相机的权限 -->
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.FLASHLIGHT" />

2. Add dependency

implementation 'cn.yipianfengye.android:zxing-library:2.2'

3.activity_ main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_gravity="center"
  android:layout_height="wrap_content">

  <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="开启相机扫描"
    android:id="@+id/btn"
    />
</LinearLayout>

4.MainActivity.java

package com.example.a86156.saomiao;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.uuzuche.lib_zxing.activity.CaptureActivity;
import com.uuzuche.lib_zxing.activity.CodeUtils;
import com.uuzuche.lib_zxing.activity.ZXingLibrary;
public class MainActivity extends AppCompatActivity {
  Button btn;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //隐藏系统认的标题
    ActionBar actionBar = getSupportActionBar();
    if(actionBar!=null){
      actionBar.hide();
    }
    //初始化相机权限
    ZXingLibrary.initDisplayOpinion(this);
    btn = findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //先判断手机版本是否在6.0以上,如果在6.0以上则需要动态申请权限
        if (Build.VERSION.SDK_INT > 22) {
          if (ContextCompat.checkSelfPermission(MainActivity.this,android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            //先判断有没有权限 ,没有就在这里进行权限的申请
            ActivityCompat.requestPermissions(MainActivity.this,new String[]{android.Manifest.permission.CAMERA},1);
          } else {
            //说明已经获取到摄像头权限了 想干嘛干嘛
            Intent intent = new Intent(MainActivity.this,CaptureActivity.class);
            startActivityForResult(intent,1);
          }
        } else {
          //这个说明系统版本在6.0之下,不需要动态获取权限。
          Intent intent = new Intent(MainActivity.this,CaptureActivity.class);
          startActivityForResult(intent,1);
        }
      }
    });
  }
  //获取手机相机权限
  @Override
  public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode,permissions,grantResults);
    if (requestCode == 1) {
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        Intent intent = new Intent(this,CaptureActivity.class);
        startActivityForResult(intent,1);
      } else {
        Toast.makeText(MainActivity.this,"请打开相机权限",Toast.LENGTH_SHORT).show();
      }
    }
  }
  //处理扫描结果
  @Override
  protected void onActivityResult(int requestCode,int resultCode,Intent data) {
    super.onActivityResult(requestCode,resultCode,data);
    if (resultCode == RESULT_OK) {
      if (data != null) {
        Bundle bundle = data.getExtras();
        if (bundle == null) {
          return;
        }
        if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
          //获取到扫描的结果
          String result = bundle.getString(CodeUtils.RESULT_STRING);
          Log.d("res:",result);
        }
      }
    }
  }
}

summary

The above is what Xiaobian introduced to you. Android studio realizes the function of mobile phone scanning QR code. I hope it will be helpful to you. If you have any questions, please leave me a message, and Xiaobian will reply to you in time. Thank you very much for your support to our website! If you think this article is helpful to you, welcome to reprint, please indicate the source, thank you!

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>