Android扫描⼆维码(使⽤华为统⼀扫码服务+附源码)
前⾔
现在⽆论什么APP都会有⼀个扫⼀扫的功能,⽹络上的各个软件的扫码功能也都⼤同⼩异,当然你想要⾃定义属于⾃⼰APP的扫码界⾯及功能的话,还是要花⼀番功夫的,不过做Demo,⽤第三⽅的就可以了。
正⽂
效果图
①创建Android项⽬
创建好了。
②配置HMS SDK的maven仓库地址
打开⼯程⽬录下的adle⽂件
a. 在allprojects ->repositories⾥⾯配置仓地址
repositories {
google()
jcenter()
maven {url 'developer.huawei/repo/'}
}
}
b. 在buildscript->repositories⾥⾯配置HMS SDK的maven仓地址
buildscript {
repositories {
google()
jcenter()
maven {url 'developer.huawei/repo/'}
}
}
c.在buildscript ->dependencies⾥⾯增加配置。
buildscript{
dependencies {
classpath 'com.huawei.agconnect:agcp:1.2.1.301'
}
}
增加后如下图,只改动增加的,其他不动。
③添加编译依赖
打开应⽤级的adle⽂件
引⽤SDK,Scan Kit提供两种SDK,您可以根据需求选择合适的SDK,
安卓intent用法implementation 'com.huawei.hms:scan:1.1.3.301'//对SDK⼤⼩敏感的开发者
implementation 'com.huawei.hms:scanplus:1.1.3.301'//对SDK⼤⼩不敏感且希望所有机型均具备最佳体验的开发者
怎么看都是这个带了plus的⽜逼⼀些,是因为scan对于⾮华为⼿机使⽤普通识别模型,⽽scanplus对⾮华为⼿机使⽤增强识别模型,虽然你感觉不到,不过就⽤plus了。
dependencies{
implementation 'com.huawei.hms:scanplus:1.1.3.301'
}
在⽂件头添加配置
apply plugin:'com.huawei.agconnect'
重新打开修改完的adle⽂件,右上⽅出现“Sync Now”链接。点击“Sync Now”等待同步完成。如果出现错误,请检查⽹络连接是否正常,以及检查gradle⽂件是否正确。
④配置l
打开l⽂件
申请静态权限
<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" />
在application标签内添加对扫码页⾯的声明
<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />
⑤实现功能
a. 修改l布局⽂件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
xmlns:tools="schemas.android/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_scan"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:text="扫⼀扫" />
</LinearLayout>
b. 添加标识和动态权限申请
public static final int CAMERA_REQ_CODE =111;
public static final int DECODE =1;
private static final int REQUEST_CODE_SCAN_ONE =0X01;
在启动扫码Activity的地⽅添加动态权限申请
//权限请求
public void loadScanKitBtnClick(View view){
requestPermission(CAMERA_REQ_CODE, DECODE);
}
/
/编辑请求权限
private void requestPermission(int requestCode,int mode){
this,
new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, requestCode);
}
c. 在权限申请返回中启动扫码界⾯
@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_GRA NTED){
return;
}
if(requestCode == CAMERA_REQ_CODE){
//启动扫描Acticity
ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE,new HmsScanAnalyzerOptions.Creator().create());
}
}
d. 在Activity回调中获取扫描码的结果
//Activity回调
@Override
protected void onActivityResult(int requestCode,int resultCode, Intent data){
if(resultCode != RESULT_OK || data ==null){
return;
}
if(requestCode == REQUEST_CODE_SCAN_ONE){
HmsScan obj = ParcelableExtra(ScanUtil.RESULT);
if(obj !=null){
Toast.makeText(iginalValue,Toast.LENGTH_SHORT).show();
}
}
}
e. 修改l
android:onClick="loadScanKitBtnClick"
⑥运⾏起来
当然还有很多效果,你要⾃⼰去发掘⑥源码
GitHub源码地址:
CSDN资源地址:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论