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 如果创建过签名文件直接选择即可,如果没有创建过,点击新建 新建签名文件需要自己记住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