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

一般情報



前回の記事では、HMS Core Scan SDKをすばやく統合する方法について説明し、このSDKを他のオープンソースのバーコードスキャンツールと比較しました。この記事をまだ読んでいない場合は、ここで見つけることができます



私たちは毎日バーコードをスキャンして、購入の支払い、ソーシャルメディアアカウントの購読、製品情報の受信を行っています。今日は、ショッピングアプリにバーコードスキャン機能を実装する方法を紹介します。



シナリオ



この機能を使用すると、ユーザーはバーコードをスキャンして製品情報と購入するためのリンクを取得できます。







アクション図







トレーニング



gradleフォルダーにあるbuild.gradleファイルを開きます







allprojects> repositoriesに 移動し、HMS CoreSDKのMavenリポジトリアドレスを構成します。



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


buildscript>リポジトリに 移動し、HMS CoreSDKのMavenリポジトリアドレスを構成します。



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


依存関係を追加する



appフォルダーにあるbuild.gradle ファイル開きます HMSコア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();
   }
}


製品の追加画面を開きます



[製品の追加]をクリックして、製品追加できる画面を開きます。



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


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



HUAWEIスキャンキットのデフォルトビューを使用してバーコードをスキャンします。



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)) {
            ……
        }
}


バーコードをスキャンして製品を見つけます



[製品のクエリ]をクリックして、製品を見つけることができる画面を開きます。コールバック関数を使用して結果を表示します。



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();
            }
        }
    }


自分で試してみてください!



[製品の追加]をクリックします。表示される画面で、製品のバーコードをスキャンして、製品の写真を撮ります。[製品のクエリ]をクリックして、製品のバーコードをスキャンします。製品はシステムに登録されているので、それに関する情報が返されます。





github.com/HMS-Core/hms-scan-demo/tree/master/Scan-Shopping



新しい例



HUAWEIスキャンキットで利用できる他のすばらしい機能の例を紹介します。ニュースに従ってください!



All Articles