2

アプリの 1 つで zxing バーコードを使用してバーコードをスキャンしようとしています。ボタンのクリックでバーコードスキャナーを開始する意図を使用しました。

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
startActivityForResult(intent, 0);

ほとんどのバーコードは正常にスキャンできますが、アプリ内で ITF (Interleaved 2 of 5) バーコードをスキャンしようとすると機能しませんが、zxing バーコード スキャナーを使用するだけでは正常に機能します。

今、私はしばらく探していて、ALLOWED_LENGTH を使用できることを読みました。この情報をスキャナに渡す方法について、多くの情報を見つけることができませんでした。私は以下を試しましたが、実際には違いはありません。

**int[] item = new int []{6, 7, 8, 9, 10, 11, 12, 13};**
**intent.putExtra("ALLOWED_LENGTHS", item);**

上記の 2 行をコードに追加しました。誰かがこれを達成する正しい方法を教えてください。

前もって感謝します

4

1 に答える 1

2

解決

intent.putExtra("SCAN_MODE", Intents.Scan.ONE_D_MODE);

注: エクストラ文字列をハードコーディングするのではなく、提供されたインテントを使用する必要があります。

説明

これは、許容される長さとは関係ありません。ITF は PRODUCT_MODE フォーマットの 1 つではありません

PRODUCT_FORMATS = EnumSet.of(BarcodeFormat.UPC_A,
                             BarcodeFormat.UPC_E,
                             BarcodeFormat.EAN_13,
                             BarcodeFormat.EAN_8,
                             BarcodeFormat.RSS_14,
                             BarcodeFormat.RSS_EXPANDED);

1Dフォーマットのリストに含まれています

ONE_D_FORMATS = EnumSet.of(BarcodeFormat.CODE_39,
                           BarcodeFormat.CODE_93,
                           BarcodeFormat.CODE_128,
                           BarcodeFormat.ITF,
                           BarcodeFormat.CODABAR);
ONE_D_FORMATS.addAll(PRODUCT_FORMATS);

インテント エクストラを変更すると、ITF サポートが有効になりますが、他の結果が生じる可能性があります (製品検索機能など)。

于 2013-06-26T18:22:59.413 に答える