LoginSignup
3
1

More than 3 years have passed since last update.

# HMS Core Scan SDKを使用したバーコードスキャン機能の実装

Last updated at Posted at 2020-08-11

概要

当社の最新の記事で、HMS Core Scan SDKを迅速に統合する方法を検討し、このSDKをその他のオープンソースのバーコードスキャンツールと比較しました。まだこの記事をお読みでない場合は、ここクリックして、ご覧いただけます。
私たちは、商品を購入したり、ソーシャルメディアアカウントをフォローしたり、製品に関する情報を入手したりする場合に毎日バーコードを利用しています。今日は、バーコードスキャン機能をショッピングアプリに実装する方法についてご紹介します。

シナリオ

ユーザーはこの機能を使用してバーコードをスキャンし、製品の情報や購入時に利用できるリンクを受信できます。
GIF-200601_214005.gif

プロセス

image.png

準備

gradleディレクトリのbuild.gradleファイルを開く

image.png
allprojects > repositoriesに移動し、HMS Core SDKのMavenリポジトリアドレスを設定します。

allprojects {    
        repositories { 
        google() 
        jcenter() 
        maven {url 'http://developer.huawei.com/repo/'} 
    } 
 }

buildscript > repositoriesに移動し、HMS Core SDKのMavenリポジトリアドレスを設定します。

buildscript { 
    repositories { 
        google() 
        jcenter() 
        maven {url 'http://developer.huawei.com/repo/'} 
    } 
 }

ビルド依存関係を追加する

appディレクトリのbuild.gradleファイルを開きます。
image.png
HMS Core SDKを統合します。

dependencies{  
    implementation 'com.huawei.hms:scan:1.1.3.301'
}
Assign permissions and specify features.
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

SDKの統合にはデフォルト表示モードを使用するため、アプリのAndroidManifest.xmlファイルでスキャン画面を宣言します。

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

実装

製品の追加と製品の照会という2つの関数を実装できます。製品のバーコードをスキャンし、撮影することで製品をバインドできます。ユーザーは、バーコードをスキャンしてその製品を照会できます。

動的な権限の申請を送信する

private static final int PERMISSION_REQUESTS = 1;
@Override 
public void onCreate(Bundle savedInstanceState) { 
    // Checking camera permission   
   if (!allPermissionsGranted()) {
       getRuntimePermissions();
   }
}

画面を開いて製品を追加する

Add Productをタップし、製品を追加できる画面を開きます。

public void addProduct(View view) {
        Intent intent = new Intent(MainActivity.this, AddProductActivity.class);
        startActivityForResult(intent, REQUEST_ADD_PRODUCT);
    }

バーコードをスキャンして製品情報を記録する

HUAWEI Scan Kitのデフォルト表示モードを使用してバーコードをスキャンします。

private void scanBarcode(int requestCode) {
        HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create();
        ScanUtil.startScan(this, requestCode, options);
    }

コールバック関数でスキャン結果を保存する

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data == null) {
            return;
        }
        if ((requestCode == this.REQUEST_CODE_SCAN_ALL)
                && (resultCode == Activity.RESULT_OK)) {
            HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
            if (obj != null && obj.getOriginalValue() != null) {
                this.barcode = obj.getOriginalValue();
            }

        } else if ((requestCode == this.REQUEST_TAKE_PHOTO)
                && (resultCode == Activity.RESULT_OK)) {
            ……
        }
}

バーコードをスキャンして製品を照会する

Query Productをタップし、製品を照会できる画面を開きます。コールバック関数を使用して結果を表示します。

public void queryProduct(View view) {
        HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create();
        ScanUtil.startScan(this, REQUEST_QUERY_PRODUCT, options);
}

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data == null) {
            return;
        }
        if ((requestCode == this.REQUEST_ADD_PRODUCT) && (resultCode == Activity.RESULT_OK)) {
            barcodeToProduct.put(data.getStringExtra(Constant.BARCODE_VALUE), data.getStringExtra(Constant.IMAGE_PATH_VALUE));
        } else if ((requestCode == this.REQUEST_QUERY_PRODUCT) && (resultCode == Activity.RESULT_OK)) {
            HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
            String path = "";
            if (obj != null && obj.getOriginalValue() != null) {
                path = barcodeToProduct.get(obj.getOriginalValue());
            }
            if (path != null && !path.equals("")) {
                loadCameraImage(path);
                showPictures();
            }
        }
    }

早速、試してみましょう

Add Productをタップします。画面が表示されるので、製品のバーコードをスキャンし、製品を撮影します。Query Productをタップし、製品のバーコードをスキャンします。製品がシステムに記録されると、その製品の情報が返されます。
GIF-200527_161851-v2.gif

More Info in Huawei Developer website

近日公開予定

HUAWEI Scan Kitを使用して可能となる、驚くような事例をさらにご紹介します。是非お待ちください。

3
1
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
3
1