1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HMS Scan Kitの特徴

HMS Scan KitはQRコードやバーコードのスキャン機能を提供するライブラリです。簡単に導入できるのが特徴です。

サポートデバイス

Android 4.4以上

サポートコード

  • QR Code
  • Data Matrix
  • PDF417
  • Aztec
  • EAN-8
  • EAN-13
  • UPC-A
  • UPC-E
  • Codabar
  • Code 39
  • Code 93
  • Code 128
  • ITF-14

実装手順

前準備

(1) Huaweu Developerを登録します。

(2) AppGallery Connectでアプリのプロジェクトを登録します。
スクリーンショット 2020-10-01 155726.png
スクリーンショット 2020-10-01 155747.png
スクリーンショット 2020-10-01 155822.png
スクリーンショット 2020-10-01 155911.png
スクリーンショット 2020-10-01 155946.png

(3) keytoolで生成したSHA256をAppGallery Connectのアプリプロジェクトに登録します。
スクリーンショット 2020-10-01 160111.png

(4) agconnect-services.jsonをダウンロードし、appフォルダに配置します。
スクリーンショット 2020-10-01 161111.png
スクリーンショット 2020-10-01 162011.png

HMS SDKを導入

(1) プロジェクトのbuild.gradleを開き、mavenとclasspathを追加します。
スクリーンショット 2020-10-01 162820.png

build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()

        // こちらの行を追加
        maven {url 'http://developer.huawei.com/repo/'}
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        // こちらの行を追加
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'
    }
}

allprojects {
    repositories {
        google()
        jcenter()

        // こちらの行を追加
        maven { url 'http://developer.huawei.com/repo/' }
    }
}

(2) モジュールのbuild.gradleを開き、次のようにを追加します。
スクリーンショット 2020-10-01 162842.png

build.gradle
plugins {
    id 'com.android.application'
    id 'kotlin-android'

    // こちらの行を追加
    id 'com.huawei.agconnect'
}

android {
    // signingConfigsを追加
    signingConfigs {
        debug {
            storePassword 'My password'
            keyAlias 'My keyAlias'
            keyPassword 'My password'
            storeFile file('My keystore file.jks')
            v1SigningEnabled true
            v2SigningEnabled true
        }
        release {
            storePassword 'My password'
            keyAlias 'My keyAlias'
            keyPassword 'My password'
            storeFile file('My keystore file.jks')
            v1SigningEnabled true
            v2SigningEnabled true
        }
    }

    buildTypes {
        release {
            // signingConfigを追加
            signingConfig signingConfigs.release

            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
            // signingConfigを追加
            signingConfig signingConfigs.debug

            debuggable true
        }
    }

    buildFeatures {
        dataBinding true
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    // こちらの1行を追加
    implementation 'com.huawei.hms:scan:2.2.0.300'
}

(3) proguard-rules.proを開き、次のようにを追加します。
スクリーンショット 2020-10-01 162901.png

proguard-rules.pro
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.huawei.hianalytics.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}

権限付与

入力でカメラを使う場合はカメラの権限(CAMERA)を、画像を使う場合はストレージ読み込みの権限(READ_EXTERNAL_STORAGE)を宣言します。

AndroidManifest.xml
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

ライブラリの使用

本稿では入力をカメラにします。

(1) カメラの権限を要求します
ロジックはこちらをご参照ください
https://qiita.com/Rei_2020/items/63fe4216835141d03c4a#%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E8%A6%81%E8%AB%8B

(2) Scan Kitを起動します

companion object {
    private const val REQUEST_CODE_SCAN_ONE = 200
}

.
.
.

ScanUtil.startScan(
    requireActivity(),
    REQUEST_CODE_SCAN_ONE,
    null
)

(3) スキャン結果を受け取ります

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (resultCode != Activity.RESULT_OK) {
        return
    }

    data?.let { data ->
        when (requestCode) {
            REQUEST_CODE_SCAN_ONE -> {
                val hmsScan = data.getParcelableExtra(ScanUtil.RESULT) as HmsScan?
                hmsScan?.let { hmsScan ->
                    // QRコードのリンク:hmsScan.linkUrl.linkvalue
                }
            }
            else -> {

            }
        }
    }
}

GitHub

https://github.com/Rei2020GitHub/MyPublicProject/tree/master/ScanKitDemo

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?