API version 11

Runtime.ShowCodeScannerメソッド変更履歴

iOSAndroidWindows

 

説明

バーコードおよび二次元コードをスキャンします。

 

本メソッドを呼び出すことで、バーコードおよび二次元コードの読取画面が表示されます。

使用の際は下記の点にご注意下さい。

(以下、バーコードシンボルおよび二次元コードシンボルのことをシンボルと呼称します)

 

読取設定について

・誤検知の防止やパフォーマンスの向上のため、コード種別の絞り込みや読取データ長の指定、読取対象外エリアを設定することをおすすめします。

 

読取時の操作

・読取の際は読取画面内の読取エリアに読み取りたいシンボルがしっかりと映り込むように端末を動かして下さい。

・特に二次元コード(QRコード、DataMatrix等)を読み取る場合、できるだけシンボルを真上から撮影して下さい。

 

読み取り精度やパフォーマンスについて

・シンボルの認識精度や認識速度に関してはお使いの端末や使用環境、シンボルの状態などに依存します。

・シンボルが常に正しく読み取れることは保証しておりません。必要に応じて読取データ長の確認やチェックディジットの検証、マスタとの突合などの処理を追加して下さい。

・同時に認識できるシンボル数はコード種別や読取状況に依存します。 特に二次元コード(QRコード、DataMatrix等)の場合、同時に複数のシンボルを認識出来ない可能性があります。

 

Android版
API Version 19より前のバージョンで本機能を使用するには、Google Play開発者サービスアプリがインストールされている必要があります。
Google Play開発者サービスアプリがインストールされていないか古いバージョンの場合、RTM-46例外が発生します。

 

呼出形式

var result = Runtime.ShowCodeScanner( sourceType [, format [, extraParams ]] );

 

戻り値

下記の構造を持つRecord配列を返します。読取がキャンセルされた場合、長さ0のRecord配列を返します。

 

Record {
	Number Format;	/* 読み取ったコードの種別。引数formatに指定した種別のうちいずれかが格納されます。 */
	 
   	String Data;	/* コードの読取結果が文字列で格納されます。 */
	 
   	Number IsComposite;	/* 読み取ったコードが合成シンボルの場合は1、そうでない場合は0が格納されます。 */
	 
   	Number IsGS1;	/* 読み取ったコードがGS1の場合は1、そうでない場合0が格納されます。 */
	 
   	Array GS1DataList; /* GS1コードに含まれるデータの配列が格納されます。 */
}
		

 

GS1DataListは下記の構造を持つRecord配列です。

 

Record {
	String Key;	/* アプリケーション識別子(AI) */
	 
   	String Label;	/* アプリケーション識別子に対応した名前 */
	 
   	String Value;	/* データが文字列形式で格納されます。日付データの場合はYYYY/MM/DD hh:mm:ssの形式で格納されます。 */
}
		

合成シンボルかどうか、およびGS1かどうかは、extraParamsの"DETECT_ENGINE"に"ATAMI"、もしくは"AsCameraX"を指定した場合に判定されます。

また、GS1DataListは"DETECT_ENGINE"に"ATAMI"を指定した場合に格納されます。

引数

integer sourceType

画像を取得する対象を指定します。

指定できる値は下記のとおりです。

 

定数

説明

Runtime.SourceTypeRearCamera

2

リアカメラ(端末背面側)を起動し読取を行います

Runtime.SourceTypeFrontCamera

3

フロントカメラ(液晶側)を起動し読取を行います

 

integer format

読取対象のバーコード/二次元コード種別を組み合わせて指定します。

デフォルトではRuntime.CODE_FORMAT_ALLが指定されます。

 

extraParamsの"DETECT_ENGINE"で指定するバーコード検出エンジンによって対応バーコードが異なります。

 

定数

種別

バーコード検出エンジン

デフォルト

"ATAMI"

"AsCameraX"

Runtime.CODE_FORMAT_CODE128

0x0001

CODE128

Runtime.CODE_FORMAT_CODE39

0x0002

CODE39

Runtime.CODE_FORMAT_CODABAR *1

0x0008

CodaBar(NW-7) ※4

Runtime.CODE_FORMAT_DATA_MATRIX *1

0x0010

DataMatrix

Runtime.CODE_FORMAT_EAN13

0x0020

EAN-13 (JAN-13) ※1

○ ※6

Runtime.CODE_FORMAT_EAN8

0x0040

EAN-8 (JAN-8)

○ ※6

Runtime.CODE_FORMAT_ITF

0x0080

ITF (Interleaved Two of Five)

Runtime.CODE_FORMAT_QR_CODE

0x0100

QRコード

○ ※5

○ ※5

Runtime.CODE_FORMAT_UPCA

0x0200

UPC-A ※1

○ ※6

Runtime.CODE_FORMAT_UPCE

0x0400

UPC-E

○ ※6

Runtime.CODE_FORMAT_PDF417 *1

0x0800

PDF417

Runtime.CODE_FORMAT_AZTEC *1

0x1000

Aztec

Runtime.CODE_FORMAT_GS1_128 *2

0x00010000

GS1-128

Runtime.CODE_FORMAT_GS1_DATABAR *2

0x00020000

GS1 Databar

Runtime.CODE_FORMAT_GS1_DATABAR_LIMITED *2

0x00040000

GS1 Databar Limited

Runtime.CODE_FORMAT_GS1_DATABAR_EXPANDED *2

0x00080000

GS1 Databar Expanded

Runtime.CODE_FORMAT_TLC_39 *2

0x00100000

TLC-39

Runtime.CODE_FORMAT_MICRO_QR *2

0x00200000

Micro QRコード

Runtime.CODE_FORMAT_MAXICODE *2

0x00400000

MaxiCode

Runtime.CODE_FORMAT_JAPAN_POSTAL *2

0x00800000

日本郵政カスタマバーコード

Runtime.CODE_FORMAT_POSTNET_US *2

0x01000000

ポストネット

Runtime.CODE_FORMAT_ALL

0xFFFFFFFF *4

読み取り可能な全てのフォーマット ※2 ※3

※1 : EAN-13として認識されるシンボル内、先頭が0となっているものはUPC-Aとして扱われます。

※2 : 他の定数と組み合わせず、単体で指定して下さい。

※3 : 将来的に読取できるコード種別が追加された場合、そのコードも読取対象となります。

※4 : 6文字以上(スタートストップ文字入れて8文字以上)のみ読み取り可能です。

※5 : "DETECT_ENGINE"が"ATAMI"かデフォルトの場合、QRコード モデル1は読み取ることはできません。

※6 : "DETECT_ENGINE"が"AsCameraX"の場合、チェックディジットが不正な値となっているUPCおよびEANは読み取れません。

 

Array extraParams

その他細かな設定を指定します。

引数のArrayのキー(文字列)に設定名を、値に設定値を格納します。

 

 

合成シンボルで使用されているGS1バーコードをformatに含める必要があります。

キー(文字列)

値の型

デフォルト値

説明

"ALLOW_SAME_SYMBOL"

boolean

true

同一シンボル読取許可を指定します。

読取許可=true, 読取禁止=false

 

コードの種別と読取結果が同じであれば、積層型かどうか、合成シンボルかどうかに関係なく同一シンボルと判定されます。

"CAMERA_FLASH"

boolean

false

カメラフラッシュ(LED)の初期状態を指定します。

点灯=true, 消灯=false

"CONTINUOUS_MODE"

boolean

false

読取モードを指定します。

連続読取=true, 単発読取=false

"CONVERT_UPCA_TO_EAN13"

boolean

false

UPC-Aとして認識されたシンボルを、EAN-13に読み替えます。

(データ先頭に0を付加し、12桁→13桁に変換)

読替有効=true, 読替無効=false

"MAX_SCAN_COUNT"

integer

0

最大読取数を指定します。

0(無制限)または1以上を指定します。 範囲外の値は0を指定した物と見なします。

"SAME_SYMBOL_SCAN_INTERVAL"

number

1.0

同一シンボルの読み取りが可能になるまでの時間(単位:秒)を指定します。

0以上の値を指定可能です。 範囲外の値は0を指定した物と見なします。

"SCAN_DATA_LENGTH" *1

integer

または

Array

null

読取対象のデータ長(コードの読取結果の文字列長)を指定します。

対象のデータ長がこの指定と異なる場合、そのシンボルは検出されても無視されます。

単一のデータ長のみ許可する場合、値には整数値を指定します。

複数のデータ長を許可する場合、値にはデータ長を整数で格納したArrayオブジェクトを指定します。

nullまたは空のArrayオブジェクトを指定した場合、全てのデータ長が許可されます。

"SCAN_AREA_MARGIN_LEFT"

number

0

左端からの読取対象外エリアを指定します。

0.0〜1.0の間を指定可能です。

例えば0.3を指定した場合、画面の左側30%は読取対象外エリアとなります。

"SCAN_AREA_MARGIN_TOP"

number

0

上端からの読取対象外エリアを指定します。

0.0〜1.0の間を指定可能です。

例えば0.3を指定した場合、画面の上側30%は読取対象外エリアとなります。

"SCAN_AREA_MARGIN_RIGHT"

number

0

右端からの読取対象外エリアを指定します。

0.0〜1.0の間を指定可能です。

例えば0.3を指定した場合、画面の右側30%は読取対象外エリアとなります。

"SCAN_AREA_MARGIN_BOTTOM"

number

0

下端からの読取対象外エリアを指定します。

0.0〜1.0の間を指定可能です。

例えば0.3を指定した場合、画面の下側30%は読取対象外エリアとなります。

"SCAN_SOUND_ID"

integer

(空値)

読取時に再生する効果音を指定します。

指定できる値は、Runtime.LoadSoundメソッドで取得した効果音Idです。

省略時や0未満を指定したとき、読取時にロードされていないIdを指定したときには効果音を再生しません。

"SCAN_AREA_TOUCH_MODE" *2

boolean

false

画面タッチによる読取領域指定を設定します。

trueを指定すると、画面をタッチした位置でシンボルを読み取ります。

読取領域のサイズはSCAN_AREA_TOUCH_SIZEで指定します。

読取領域の有効時間はSCAN_AREA_TOUCH_TIMEで指定します。

"SCAN_AREA_TOUCH_SIZE" *2

number

0.2

画面タッチによる読取領域指定が有効な場合の、スキャン領域のサイズを指定します。

0.0〜1.0の間を指定可能です。

画面の短辺に対する割合となります。

例えば端末が縦向きで0.3を指定した場合、画面のタップ位置を中心に、画面の横幅の30%の領域が読取対象となります。

"SCAN_AREA_TOUCH_TIME" *2

number

5.0

画面タッチによる読取領域指定が有効な場合の、読取領域が有効な時間を秒単位で指定します。

0を指定すると、次に画面をタッチするまで読取領域は固定されます。

"SCAN_AREA_LINE_HORIZONTAL" *2

number

0.0

画面上に水平線を引き、線と重なったシンボルだけを読み取ります。

0.0〜1.0の間を指定可能です。0.0、もしくは1.0が指定された場合は水平線を引きません。

例えば0.3を指定した場合、画面上から30%の位置に水平線を引きます。

SCAN_AREA_LINE_VERTICALと同時に指定された場合は、線の交点と重なったシンボルだけを読み取ります。

 

SCAN_AREA_TOUCH_MODEがtrueの場合は無効となります。

"SCAN_AREA_LINE_VERTICAL" *2

number

0.0

画面上に垂直線を引き、線と重なったシンボルだけを読み取ります。

0.0〜1.0の間を指定可能です。0.0、もしくは1.0が指定された場合は垂直線を引きません。

例えば0.3を指定した場合、画面左から30%の位置に垂直線を引きます。

SCAN_AREA_LINE_HORIZONTALと同時に指定された場合は、線の交点と重なったシンボルだけを読み取ります。

 

SCAN_AREA_TOUCH_MODEがtrueの場合は無効となります。

"SHOW_DUPLICATED" *2

boolean

false

ALLOW_SAME_SYMBOLにfalseを指定した場合に、読取済みシンボル上にマークを表示するかどうかを指定します。

読取済みシンボルと同一かどうかを判定する間隔はSAME_SYMBOL_SCAN_INTERVALの指定値となります。

マークを表示する=true マークを表示しない=false

"DUPLICATED_SOUND_ID" *2

integer

(空値)

ALLOW_SAME_SYMBOLにfalseを指定した場合に、読取済みシンボルを再度読み取った際に再生する効果音を指定します。

指定できる値は、Runtime.LoadSoundメソッドで取得した効果音Idです。

省略時や0未満を指定したとき、読取時にロードされていないIdを指定したときには効果音を再生しません。

読取済みシンボルと同一かどうかを判定する間隔はSAME_SYMBOL_SCAN_INTERVALの指定値となります。

"DETECT_ENGINE" *3

String

(空値)

バーコード検出エンジンを指定します。

指定可能な値は下記の通りです。

  • "ATAMI" : GS1コード対応エンジンを使用します
  • "AsCameraX" : 株式会社アスタリスク社製バーコード読取ライブラリ「AsCameraX」を使用します
  • (空値) : デフォルトのバーコード検出エンジンを使用します

 

それぞれのバーコード検出エンジンの動作についてはバーコード検出エンジンの概要を参照してください。

検出エンジンによって読み取り可能なバーコードや使用できる設定が異なります。

"MAX_RESOLUTION" *3

boolean

false

trueを指定すると、カメラの解像度を最大にします。

解像度を高くするとバーコードの検出能力があがる可能性がありますが、動作が重くなる、検出速度が遅くなるなどパフォーマンスに影響する場合があります。

"CHECKDIGIT_CODE39" *3

boolean

false

trueを指定すると、Code39のチェックディジットを計算しチェックディジットが一致した場合のみ結果を返します。

誤検出が起こりにくくなりますが、チェックディジットがないCode39も存在することに注意する必要があります。

"GS1_GTIN_ONLY" *3

boolean

false

trueを指定すると、GS1合成シンボル中に含まれるGTINの情報だけを読取結果として返します。

"DETECTED_ENGINE"に"ATAMI"を指定した場合のみ使用できます。

GS1合成シンボルは読み取りに時間がかかりますが、GTINの情報だけが必要な場合はこのオプションを使用することで読取速度をあげることができます。

"CHARSET" *3

String

(空値)

QRコードの文字列を解釈する文字コードを指定します。"Shift_JIS"を指定することが可能です。未指定の場合はUTF-8となります。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

従来のバーコード検出エンジンとの互換性のため、文字コードにUTF-8を指定してShift_JISのQRコードを読んだ場合は、Biz/Browserで文字化けを検出して正しい文字への変換を試みます。

"COMPOSITE_CCAB" *3

boolean

true

trueを指定すると、CC-A/CC-B形式のGS1合成シンボルが読み取り可能になります。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

合成シンボルを読み取る際はこのオプションを有効にするとともに、合成シンボルで使用されているGS1バーコードをformatに含める必要があります。

"COMPOSITE_CCC" *3

boolean

true

trueを指定すると、CC-C形式のGS1合成シンボルが読み取り可能になります。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

合成シンボルを読み取る際はこのオプションを有効にするとともに、合成シンボルで使用されているGS1バーコードをformatに含める必要があります。

"UPC_COMPOSITE" *3

boolean

false

trueを指定すると、UPCの合成シンボルが読み取り可能になります。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

合成シンボルを読み取る際はこのオプションを有効にするとともに、合成シンボルで使用されているUPCのバーコードをformatに含める必要があります。

"CONVERT_DATABAR_TO_UPC" *3

boolean

false

trueを指定すると、GS1 Databar/GS1 Databar Limitedの読み取り結果をUPC/EANに読み替えて返します。

GS1に含まれるGTINのデータのうち先頭から連続している0を除いた桁数が13の場合はEAN-13に、12桁の場合はUPC-Aに読み替えます。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

読み取り対象のGS1 Databar、および読み替え先のUPC/EANをformatに含める必要があります。

"GS1_EMULATION_MODE" *3

boolean

false

trueを指定すると、GS1合成シンボルの結果をGS1-128として返します。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

"EAN_SUPPLEMENTAL" *3

boolean

false

trueを指定すると、補助コード付きのEANが読み取り可能になります。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

合成シンボルで使用されているEANバーコードをformatに含める必要があります。

"GS1DATABAR_HIGH_SECURITYLEVEL" *3

boolean

false

trueを指定すると、GS1 Databarの誤読が起きにくくなります。ただし、読取結果を返しにくくなります。

"DETECTED_ENGINE"に"AsCameraX"を指定した場合のみ使用できます。

"ZOOM_RATIO" *3

Number

1.0

カメラのズーム倍率を指定します。カメラが対応していない倍率が指定された場合、対応可能な倍率に丸め込みます。

例外

FUNC-4

引数の値が不正です

RTM-46

カメラの操作に失敗しました。

使用例

try{
	/* リアカメラから読み取ります */
	var sourceType = Runtime.SourceTypeRearCamera; 
	/* EAN13バーコードおよびQRコードのみを読み取ります */
	var format = Runtime.CODE_FORMAT_EAN13 + Runtime.CODE_FORMAT_QR_CODE;
	/* UPC-AバーコードをEAN13バーコードに読み替えます */
	var extraParams = new Array;
	extraParams["CONVERT_UPCA_TO_EAN13"] = true;
	/* 読取開始 */
	var rtm = new Runtime;
	var result = rtm.ShowCodeScanner(sourceType, format, extraParams);
	/* 結果表示 */
	if(result.length > 0) {
		//.MessageBox("読取結果 : " + result[0].data, "種別 : " + str(result[0].format));
	} else {
		//.MessageBox("読取はキャンセルされました");
	}
}catch(e){
	//.MessageBox(e.Method + "-" + str(e.Code));
	//.MessageBox(e.message);
}

関連項目

LoadSoundメソッド

 

変更履歴
*1 API version 12から追加されました。
*2 API version 18から追加されました。
*3 API version 31から追加されました。
*4 API version 31から仕様変更されました。


「オンラインマニュアル」一覧へ戻る
「Bizの宝箱」TOPへ戻る