日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

2022-04-21 Android开发扫描二维码

發布時間:2023/12/18 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2022-04-21 Android开发扫描二维码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android掃描二維碼信息

調用華為的scanplus庫做二維碼掃描

1.在項目的build.gradle文件中添加華為的maven開發庫地址,文件內容如下。buildscript 和allprojects 節點的repositories 節點內都添加了。

maven {url 'http://developer.huawei.com/repo/'}

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {google()jcenter()maven {url 'http://developer.huawei.com/repo/'}}dependencies {classpath 'com.android.tools.build:gradle:3.5.2'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files} }def releaseTime() {return new Date().format("yyyy-MM-dd",java.util.TimeZone.getTimeZone("UTC")) }allprojects {repositories {google()jcenter()maven { url 'https://jitpack.io' }maven { url 'http://developer.huawei.com/repo/'}}ext {compileSdkVersion = 30buildToolsVersion = "30.0.3"minSdkVersion = 19targetSdkVersion = 30} }task clean(type: Delete) {delete rootProject.buildDir }

2.app的build.gradle文件中添加庫的依賴,文件內容如下,文件中的其他部分省略了。

implementation 'com.huawei.hms:scanplus:1.1.1.301'

apply plugin: 'com.android.application'android {... }dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])...//implementation project(path: ':Venus')api 'com.gitee.premeditate:VenusAndroid:V1.0.22'//二維碼掃描庫implementation 'com.huawei.hms:scanplus:1.1.1.301' }

3.在AndroidManifest.xml清單文件中聲明掃描二維碼的Activity和相關權限,文件內容如下。無關的內容省略。

<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="org.venus.mpeqi"><!--相機權限--><uses-permission android:name="android.permission.CAMERA" /><!--讀文件權限--><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--使用特性--><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" /><applicationandroid:name="org.venus.library.app.LibraryApplication"android:allowBackup="true"android:icon="@drawable/icon_app"android:label="@string/app_name"android:roundIcon="@drawable/icon_app"android:supportsRtl="true"android:theme="@style/NoTitleBar"><activityandroid:name=".ui.activity.LoginActivity"android:screenOrientation="userLandscape"android:windowSoftInputMode="stateHidden"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--對掃碼頁面進行聲明--><activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" /></application></manifest>

4.在調用掃碼功能處按照如下函數執行

調用事件

掃碼功能的按鈕點擊事件,在這里去申請掃碼權限

/*** 掃描二維碼*/ private void scan() {requestPermission(CAMERA_REQ_CODE, 1); }

請求權限

筆者在這里不調用動態申請權限。在設備中手動允許應用的相機權限但是仍不能掃碼,所以這里必須動態申請一次相機權限。

private void requestPermission(int requestCode, int mode) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, requestCode); }

請求權限結果

權限請求結果,如果拒絕權限就不能繼續執行,允許權限就可以啟動掃碼界面進行掃碼。

@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {if (permissions == null || grantResults == null) {return;}if (grantResults.length < 2 || grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {return;}if (requestCode == CAMERA_REQ_CODE) {ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE).create());} }

掃碼結果

掃碼結果拿到的是HmsScan對象,通過打印可以看到二維碼的基本數據大概是如下結構的。可以通過HmsScan對象的originalValue屬性拿到二維碼的主要信息進行業務處理,如果掃描的二維碼與你的業務無關,可以做個簡易的提示并不處理這次掃描,如果是你系統的信息就執行你的業務。

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode != RESULT_OK || data == null) {return;}if (requestCode == REQUEST_CODE_SCAN_ONE) {HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT); // System.out.println(new Gson().toJson(obj));System.out.println(obj.originalValue);try {QRCode qrCode = new Gson().fromJson(obj.originalValue, QRCode.class);if (!QRCode.TITLE_DEFAULT.equals(qrCode.title)) {ToastUtil.show(this, "二維碼標識信息不正確");return;}queryEquipmentInfoByNumber(qrCode.number);} catch (Exception e) {ToastUtil.show(this, "請掃描移動便攜設備二維碼");}} }

二維碼數據結構

{"HMS_SCAN_VERSION": 3,"cornerPoints": [{"x": 691,"y": 1080},{"x": 328,"y": 855},{"x": 544,"y": 492},{"x": 915,"y": 715}],"linkUrl": {"linkvalue": "https://u.wechat.com/EDTLAmRNzshSMzp21uQ4kBM","theme": ""},"originValueByte": [66,-58,-121,71,71,7,51,-94,-14,-9,82,-25,118,86,54,-122,23,66,-26,54,-10,-46,-12,84,69,68,-60,22,-43,36,-25,-89,54,-123,52,-41,-89,3,35,23,85,19,70,-76,36,-48],"originalValue": "https://u.wechat.com/EDTLAmRNzshSMzp21uQ4kBM","scanType": 1,"scanTypeForm": 1006,"showResult": "https://u.wechat.com/EDTLAmRNzshSMzp21uQ4kBM","zoomValue": 0.0 }

業務

拿到掃描結果后執行你自己的業務

private void queryEquipmentInfoByNumber(String number) {Common.queryEquipmentByNumber(this,number); }

5.截圖

這是程序界面,點擊右上角的掃碼按鈕,執行掃碼函數

Screenshot_20220421_101019_org.venus.mpeqi.jpg

掃碼界面,如果是第一次掃碼會提示申請權限,選擇允許就好。掃碼界面出現二維碼后會很快識別到二維碼信息并退出。

Screenshot_20220421_101043_org.venus.mpeqi.jpg

掃描到二維碼數據解析后進行業務處理,筆者這里就是掃描到系統內的設備信息并顯示。

Screenshot_20220421_101107_org.venus.mpeqi.jpg

總結

以上是生活随笔為你收集整理的2022-04-21 Android开发扫描二维码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。