首页 > 其他分享 >Android调用华为统一扫码服务

Android调用华为统一扫码服务

时间:2022-10-20 09:45:44浏览次数:68  
标签:扫码 id huawei 华为 requestCode import Android com android

1.Android新建project   此时注意新建的project的包名和项目名称,后面需要这2个   2.在华为开发平台新建项目并创建应用,此时需要输入项目名称和包名,要和上面的一致 https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/   3.创建签名证书,   路径:build-generateGenerate Signed Bundle/APK 选中APK点击next 0   如果创建过签名文件直接选择即可,如果没有创建过,点击新建 0   新建签名文件需要自己记住Alias和password,这个后面也会用到   签名选择结束之后,点击结束就可以了   4.生成签名证书指纹   进入你sdk的路径,一般在C盘的programFiles/Java下,进入bin文件夹,按住shift+右键,进入命令行   输入命令行keytool -list -v -keystore C:\TestApp.jks(这个是你的文件的路径)   将生成的SHA256代码复制,然后再华为开发者平台项目里数据SHA256签名指纹   5.AS的配置,最麻烦的一步   首先是项目级的build.gradle,加入下面的代码,记住在plugins标签前面  

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
//        maven { url 'https://jitpack.io' }
        maven {
            allowInsecureProtocol = true
            url "http://developer.huawei.com/repo/"
        }


        dependencies {
            classpath 'com.android.tools.build:gradle:7.1.0-alpha08'
            classpath 'com.huawei.agconnect:agcp:1.4.1.300'
        }


    }
}

 

  然后打开setting.gradle,将之前的pluginManagement和dependencyResolutionManagement替换成
pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
        // 配置HMS Core SDK的Maven仓地址。
        maven { url 'https://developer.huawei.com/repo/' }
        plugins {
            id 'com.android.application' version '7.1.0-alpha08'
            id 'com.android.library' version '7.1.0-alpha08'
            id 'org.jetbrains.kotlin.android' version '1.6.0'
        }

    }
}
dependencyResolutionManagement {

    repositories {
        google()
        mavenCentral()
        // 配置HMS Core SDK的Maven仓地址。
        maven { url 'https://developer.huawei.com/repo/' }
    }
}

 

  最后进入build.gradle(app),增加如下代码,第三行huawei.agconnect是新增的
plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'com.huawei.agconnect'
}

 

  另外在android标签内增加如下代码  
signingConfigs {
        release {
            storeFile file('ScanDemo.jks')
            keyAlias 'ScanDemo'
            keyPassword '0zhaixue0'
            storePassword '0zhaixue0'
//        v1SigningEnabled true
//        v2SigningEnabled true
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            signingConfig signingConfigs.release
            debuggable true
        }
    }

 

  最后别忘记增加华为的依赖  
implementation 'com.huawei.hms:scanplus:2.1.0.300'

 

  进入AndroidMainfest.xml文件内,增加如下代码,和application同级
<!--相机权限-->
<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" />

 

  点击同步即可 6.调用代码   
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.Button
import android.widget.Toast
import androidx.core.app.ActivityCompat
import com.huawei.hms.hmsscankit.ScanUtil
import com.huawei.hms.ml.scan.HmsScan
import com.huawei.hms.ml.scan.HmsScanAnalyzerOptions


class MainActivity : AppCompatActivity() {
    val  DEFAULT_VIEW :Int = 0x22
    val REQUEST_CODE_SCAN :Int = 0x01
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val btnScan : Button = findViewById(R.id.btn1)
        btnScan.setOnClickListener {
            newViewBtnClick()
            ScanUtil.startScan(this@MainActivity, REQUEST_CODE_SCAN, HmsScanAnalyzerOptions.Creator().setHmsScanTypes(
            HmsScan.ALL_SCAN_TYPE).create())
        }
    }

    private fun newViewBtnClick() {
        // DEFAULT_VIEW为用户自定义用于接收权限校验结果。
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            this.requestPermissions(
                arrayOf(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE),DEFAULT_VIEW)
        }
    }
    override
    fun onRequestPermissionsResult(requestCode:Int, permissions:Array<out String>, grantResults:IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (permissions == null || grantResults.size< 2 || grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {
            return
        }
        if (requestCode == 111) {
            // 调用DefaultView扫码界面。
            ScanUtil.startScan(this@MainActivity, REQUEST_CODE_SCAN, HmsScanAnalyzerOptions.Creator().setHmsScanTypes(
                HmsScan.ALL_SCAN_TYPE).create())
        }
    }
    override fun onActivityResult(requestCode:Int, resultCode:Int, data:Intent?) {
        // 当扫码页面结束后,处理扫码结果。
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode != RESULT_OK || data == null) {
            return
        }
        // 从onActivityResult返回data中,用ScanUtil.RESULT作为key值取到HmsScan返回值。
        else if (requestCode == REQUEST_CODE_SCAN) {

            when (val obj: Any = data.getParcelableExtra(ScanUtil.RESULT)!!) {
                is HmsScan -> {
                    if (!TextUtils.isEmpty(obj.getOriginalValue())) {
                        Toast.makeText(this, obj.getOriginalValue(), Toast.LENGTH_SHORT).show()
                    }
                    return
                }
            }
        }
    }
}

 

 

标签:扫码,id,huawei,华为,requestCode,import,Android,com,android
From: https://www.cnblogs.com/daimaxiaozhai/p/16808644.html

相关文章

  • 华为格式化代码
    <code_schemename="HWCodeFormatterFromIdeacopy"version="173"><JavaCodeStyleSettings><optionname="ANNOTATION_PARAMETER_WRAP"value="1"/><option......
  • android类加载源码分析
    Dex文件加载过程PathClassLoader和DexClassLoader都可以加载dex和apk文件,其对应的基类都是BaseDexClassLoader。在new一个PathClassLoader/DexClassLoader对象时就会调......
  • Android开发踩坑日记
    ViewModelProviders被弃用,改为ViewModelProviderViewModelProvider使用方法MyViewModelmodel=newViewModelProvider(this).get(MyViewModel.class);可能报错Can......
  • 每天学习一个Android中的常用框架——0.目录
    文章目录​​1.前言​​​​2.环境​​​​3.目录​​​​3.1持久化​​​​3.1.1Litepal​​​​3.1.2GreenDao​​​​3.1.3Realm​​​​3.1.4DBFlow​​​​3.2网......
  • 同样的内核,为何linux干净稳定,而android臃肿又乌烟瘴气
    众所周知,现在智能手机操作系统主要有两大类:Android、iOS,采用Android系统的智能机品牌厂商很多(如:华为、Oppo、小米、魅族、三星、还有一些杂牌机等等),而iOS系统只有苹果的iPho......
  • Android打包混淆笔记
    Proguard介绍AndroidSDK自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使......
  • 【ENSP】华为多级帧中继交换的【FRSW】的配置
    一、任务:  二、任务一【全连接】配置实现:  FRSW4配置信息:   FRSW3配置信息:   FRSW2配置信息:  在R4、R5、R6的S0/0/0启用FR协议和配置IP地址,即......
  • Android APP 自动更新实现
    AndroidApp自动更新基本上是每个App都需具备的功能,参考网上各种资料,自己整理了下,先来看看大致的界面:一、实现思路:1.发布AndroidApp时,都会生成output-metadata.json文......
  • AndroidS
    改变主题颜色   ......
  • 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
    本篇记录我在实现时的思考过程,写给之后可能遇到困难的我自己也给到需要帮助的人。写的比较浅显,见谅。在写项目代码的时候,需要把Android端的位置信息传输到服务器端,通过Ne......