时间:2021-05-20
本文实例为大家分享了Android实现扫描二维码的具体代码,供大家参考,具体内容如下
1.效果图:
2.引用公共库:builder.radle,在app目录下
implementation 'com.google.android.gms:play-services-maps:17.0.0'implementation 'com.google.android.gms:play-services-vision:19.0.0'implementation 'com.google.android.gms:auth-api-impl:11.6.0'3.清单文件,拍照权限申请
<uses-permission android:name="android.permission.CAMERA" />4.主界面:
package com.example.administrator.testz; import android.Manifest;import android.app.Activity;import android.content.ActivityNotFoundException;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.pm.PackageManager;import android.content.res.Resources;import android.net.Uri;import android.os.Bundle;import android.os.PersistableBundle;import android.os.Vibrator;import android.util.Log;import android.util.SparseArray;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.widget.TextView; import com.google.android.gms.vision.CameraSource;import com.google.android.gms.vision.Detector;import com.google.android.gms.vision.barcode.Barcode;import com.google.android.gms.vision.barcode.BarcodeDetector; import java.io.IOException;import java.util.ArrayList; import androidx.annotation.Nullable;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.ActivityCompat; public class MainActivity extends AppCompatActivity { SurfaceView surfaceView; CameraSource cameraSource; TextView qrCodeText; BarcodeDetector barcodeDetector; public static ArrayList<String> scannList; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); surfaceView = (SurfaceView) findViewById(R.id.qrView); qrCodeText = (TextView) findViewById(R.id.tv); scannList = new ArrayList<>(); barcodeDetector = new BarcodeDetector.Builder(this) .setBarcodeFormats(Barcode.QR_CODE) .build(); cameraSource = new CameraSource.Builder(this, barcodeDetector) .setRequestedPreviewSize(640, 480) .setAutoFocusEnabled(true) .build(); surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { return; } try { cameraSource.start(holder); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { cameraSource.stop(); } }); barcodeDetector.setProcessor(new Detector.Processor<Barcode>() { @Override public void release() { } @Override public void receiveDetections(Detector.Detections<Barcode> detections) { final SparseArray<Barcode> qrCode = detections.getDetectedItems(); if (qrCode.size() != 0) { qrCodeText.post(new Runnable() { @Override public void run() { qrCodeText.setText(qrCode.valueAt(0).displayValue); addInList(qrCode.valueAt(0).displayValue); } }); } } }); } private void addInList(String scannResult) { if (scannList.isEmpty()) { scannList.add(scannResult); } else { String a = scannList.get(scannList.size() - 1); if (!a.equals(scannResult)) { scannList.add(scannResult); } } for (String s : scannList) { Log.e("s", "onCreate: " + s); } Log.e("size", "addInList: " + scannList.size()); } @Override protected void onDestroy() { super.onDestroy(); }}5.布局页面:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.testz.MainActivity"> <SurfaceView android:id="@+id/qrView" android:layout_width="300dp" android:layout_height="300dp" android:layout_marginStart="32dp" android:layout_marginLeft="32dp" android:layout_marginEnd="32dp" android:layout_marginRight="32dp" android:orientation="vertical" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="TextView" android:textSize="30sp" /> </RelativeLayout>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android中googleZxing实现二维码与条形码扫描了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然
本文实例为大家分享了Android实现扫描和生成二维码的具体代码,供大家参考,具体内容如下需求:就是需要把数据存放到二维码中,然后通过扫描二维码拿到数据,并展示
Android扫描二维码时出现用户禁止权限报错问题解决办法当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能。组长说如果用户禁止调
怎么使用易信的扫一扫功能易信二维码扫描怎么使用易信的扫一扫功能易信二维码扫描怎么使用易信的扫一扫功能易信二维码扫描怎么使用易信的扫一扫功能易信二维码扫描怎么使用
前言:对于二维码扫描我们使用的是开源框架Zxing或者Zbar,这里使用基于zxing的二维码扫描,类似支付宝网格扫描。二维码原理介绍: 二维码是用某种特定的