はじめに
- Mobile Vision API / Firebase ML Kitで認識できるBarcodeの種別は12種類
- QRコード読取りアプリを作成した際に、それぞれの種類のBarcode(QRコード)のサンプル画像があまりなく動作確認が大変だったので残しておくことにしました
Barcodeの種類
Mobile Vision API : Barcode.valueFormat
Firebase ML Kit : FirebaseVisionBarcode#getValueType()
で種別を取得することができます。
取得できる種別は以下の12種類です。
- Text
- URL
- Phone
- SMS
- WiFi
- Geo-location (latitude and longitude)
- Contact information (VCARD, etc.)
- Calendar event
- ISBN
- Product
- AAMVA driver license/ID
Barcodeの作成
Barcodeに含まれる文字情報に応じて、返却される種別が変わります。
コードからはrawValueとして取得することができます。
Mobile Vision API : Barcode.rawValue
Firebase ML Kit : FirebaseVisionBarcode#getRawValue()
各種別の形式と例
Text
- rawValueの形式が特別でない場合は、Textになります
Url
(MEBKM:URL:https://google.com;TITLE:Google;)
- urlのみ
- urlのみ
- (例)https://google.com
- MEBKM
- MEBKM:URL:{url};TITLE:{タイトル};
- 上記の形式でURLとタイトルを含んだBarcodeができます
- (例)MEBKM:URL:https://google.com;TITLE:Google;
(mailto:bob@example.org,john@example.com?subject=baz&body=buzz)
- メールアドレスのみ
- @マークが含まれ、@マーク以降の文字列に.が含まれるとメールアドレスとするようです
- (例)123@456.com
- mailto
- mailto:{メールアドレス}?subject={件名}&body={本文}
- 上記の形式でメールアドレス、件名、本文を含んだBarcodeができます
- メールアドレスはカンマ区切りで複数のtoを指定することができます
- (例)mailto:bob@example.org,john@example.com?subject=baz&body=buzz
- MATMSG
- MATMSG:TO:{メールアドレス};SUB:{件名};BODY:{本文};;
- 上記の形式でメールアドレス、件名、本文を含んだBarcodeができます
- (例)MATMSG:TO:srowen@example.org;SUB:Stuff;BODY:This is some text;;
- smtp
- smtp:{メールアドレス}:{件名}:{本文}
- 上記の形式でメールアドレス、件名、本文を含んだBarcodeができます
- (例)smtp:srowen@example.org:foo:bar
Phone
- tel
- tel:{電話番号}
- 上記の形式で電話番号を含んだBarcodeができます
- (例)tel:1234567
SMS
- smsto
- smsto:{電話番号}:{本文}
- 上記の形式で電話番号、本文を含んだBarcodeができます
- (例)smsto:123456:test
Wifi
(WIFI:S:TenChars;P:0123456789;T:WEP;;)
- WIFI
- WIFI:S:{SSID};P:{パスワード};T:{タイプ};;
- 上記の形式でSSID、パスワード、タイプ(WEP/WAP/OPEN)を含んだBarcodeができます
- タイプの指定をしないとOPENになります
- (例)WIFI:S:TenChars;P:0123456789;T:WEP;;
Geo-location
- geo
- geo:{緯度},{経度}
- 上記kの形式で緯度、経度を含んだBarcodeができます
- geo:-20.33,132.3344
Contact information
(MECARD:N:Foo Bar;ORG:Company;TEL:5555555555;EMAIL:foo.bar@xyz.com;ADR:City, 10001;NOTE:This is the memo.;;)
- MECARD
- MECARD:N:{名前};ORG:{所属};TEL:{電話番号};EMAIL:{メールアドレス};ADR:{住所};NOTE:{メモ};;
- 上記の形式で、名前、所属、電話番号、メールアドレス、住所、メモを含んだBarcodeができます
- (例)MECARD:N:Foo Bar;ORG:Company;TEL:5555555555;EMAIL:foo.bar@xyz.com;ADR:City, 10001;NOTE:This is the memo.;;
- vCard
- BEGIN:VCARD
VERSION:3.0
N:{名前}
ORG:{所属}
TITLE:{タイトル}
TEL:{電話番号}
URL:{URL}
EMAIL:{メールアドレス}
ADR:{住所}
NOTE:{メモ}
END:VCARD - 上記の形式で、名前、所属、タイトル、電話番号、URL、メールアドレス、住所、メモを含んだBarcodeができます
- (例)
BEGIN:VCARD
VERSION:3.0
N:Bob
ORG:Sample Company
TITLE:Test title
TEL:0001234567
URL:http://sample.com
EMAIL:test@oo.com
ADR:test address test address2
NOTE:test memo
END:VCARD
- BEGIN:VCARD
Calendar event
(BEGIN:VEVENT
SUMMARY:sample event
DTSTART:20180812T051200Z
DTEND:20180813T061200Z
LOCATION:test location
DESCRIPTION:sample event
END:VEVENT
)
- VEVENT
- BEGIN:VEVENT
SUMMARY:{概要}
DTSTART:{開始時刻}
DTEND:{終了時刻}
LOCATION:{場所}
DESCRIPTION:{詳細}
END:VEVENT - 上記の形式で、概要、開始時刻、終了時刻、場所、詳細を含んだBarcodeができます
- (例)
BEGIN:VEVENT
SUMMARY:sample event
DTSTART:20180812T051200Z
DTEND:20180813T061200Z
LOCATION:test location
DESCRIPTION:sample event
END:VEVENT
- BEGIN:VEVENT
ISBN
- ISBN文字列
- EAN-13やJAN-13などのフォーマットで、ISBNの規格の文字列の場合、ISBNとなります
- (例)9781234567897
Product
- Product文字列
- EAN-13/JAN-13/UPC-A/UPC-8などのフォーマットの文字列の場合、Productとなります
- (例)1234512345123
AAMVA driver license/ID
- どのような形式で取得できるかわかりませんでした。
参考
-
https://zxing.appspot.com/generator
- 確認用のQRコードの生成に利用しました
-
https://github.com/zxing/zxing/tree/master/core/src/test/java/com/google/zxing/client/result
- zxingのテストコード
- Mobile Vision API/ML Kitの種別として返ってこないケースもありましたが、読み取るBarcodeの仕様の参考になりました
-
https://barcode-place.azurewebsites.net/
- 確認用のJANコードの生成に利用しました
-
https://www.barcoderobot.com/
- 確認用のEANコードの生成に利用しました