barcode-capture-android について
AndroidでScandit BarcodeCaptureを統合、更新、置き換えるためのコーディングスキルです。資料でSDK APIを確認し、Android固有のカメラ、スレッド、スキャンコールバックを適切に扱う方法を示します。
主な機能
- 01資料に基づくAPI確認
- 02統合と移行のガイド
- 03カメラのライフサイクル管理
- 04バックグラウンドスレッドのコールバック案内
- 05Scanditライセンス設定の案内
活用シーン
- 01Androidアプリへのバーコードスキャン追加
- 02既存のScandit統合の更新
- 03別のスキャンライブラリからの置き換え
MCP 対応
リモートのScandit MCPサーバーを使ったスキャナーライセンスの設定と、トライアルキーの取得方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scandit/ skills --skill barcode-capture-androidインストール後、Claude Code で/barcode-capture-androidを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/integration.mdmigration.mdthird-party-migration.md詳細
BarcodeCapture Android スキル
重要:内部知識を鵜呑みにしないでください
学習データには、古い、または誤った Scandit SDK API が含まれている可能性があります。BarcodeCapture API はメジャー SDK バージョン間で大幅に変更され、プロパティの名前変更、削除、再構成が行われます。
コードを作成または提案する前に、必ずこのスキルで提供されているリファレンスで API を確認してください。 記憶しているメソッドシグネチャ、パラメーター、プロパティ名に頼らないでください。提供されているリファレンスに API が見つからない場合は、回答する前に該当するドキュメントページを取得してください。
注意すべき Android 固有の落とし穴:
Camera.getDefaultCamera(BarcodeCapture.createRecommendedCameraSettings())は、推奨カメラ設定をgetDefaultCamera()の呼び出しに直接渡します。別途applySettingsを呼び出す必要はありません。codeDuplicateFilterはTimeIntervalです。IntやDoubleではありません。TimeInterval.millis(500)を使用してください(com.scandit.datacapture.core.time.TimeIntervalをインポートします)。codeDuplicateFilter = 0.5またはcodeDuplicateFilter = 500と書くと、型エラーになります。- Android のリスナーコールバックは
onBarcodeScanned(barcodeCapture, session, data)です。didScanではありません(これは Flutter/iOS での名前です)。さらに、onSessionUpdated、onObservationStarted、onObservationStoppedも実装する必要があります。FrameDataパラメーターの名前はframeDataではなくdataです。 onBarcodeScannedはバックグラウンドスレッドで呼び出されます。UI を更新する場合は、runOnUiThread {}を介してディスパッチしてください。- 重複スキャンや競合状態を防ぐため、処理を始める前に
onBarcodeScannedの冒頭でbarcodeCapture.isEnabled = falseを呼び出してください。アプリが再びスキャンできる状態になったら、barcodeCapture.isEnabled = trueで再度有効にします。 - Android のシンボロジー名にはアンダースコアを使用します。
Symbology.EAN13_UPCA、Symbology.CODE39、Symbology.INTERLEAVED_TWO_OF_FIVEのように記述し、キャメルケースにはしません。 onPause()でカメラをオフにし、onResume()で再度有効にしてください。アプリがバックグラウンドにある間、カメラをアクティブにしてはいけません。- 最初のスキャンの前に、実行時に
CAMERA権限をリクエストしてください。マニフェストで宣言するだけでは不十分です。 DataCaptureView.newInstance(this, dataCaptureContext)はカメラプレビューウィジェットを作成します。Activity ではsetContentView(dataCaptureView)に渡します。Fragment では、プログラムによってビュー階層に追加します。
インテントの振り分け
ユーザーのリクエストに基づいて、回答する前に適切なリファレンスファイルを読み込んでください。
- BarcodeCapture を一から統合する、設定を構成する、フィードバックをカスタマイズする、ビューファインダーを追加する、スキャンを処理する、またはスキャン後に非同期処理を行う(例:「アプリに BarcodeCapture を追加する」「バーコードスキャンを設定する」「Android で BarcodeCapture を使うには?」「重複スキャンをフィルタリングする」「ビープ音を抑制する」「ビューファインダーを追加する」「バーコードを検索する間スキャンを無効にする」)→ references/integration.md を読み、そこに記載された手順に従ってください。
- 既存の BarcodeCapture 統合を移行またはアップグレードする(例:「v6 から v7 にアップグレードする」「BarcodeCapture を移行する」「Scandit SDK を v8 に上げる」「SDK バージョン間で何が変わったか」)→ references/migration.md を読み、そこに記載された手順に従ってください。
- サードパーティ製バーコードスキャナーを BarcodeCapture に置き換える(例:「ZXing スキャナーを BarcodeCapture に置き換える」「ML Kit のバーコードスキャンから Scandit に移行する」「[library] から BarcodeCapture に切り替える」)→ references/third-party-migration.md を読み、そこに記載された手順に従ってください。
API の使用ポリシー
以下の Scandit のリファレンスで明示的に文書化されている API のみを使用してください。メソッドのシグネチャ、パラメーター、プロパティ名を推測したり、作り出したりしないでください。API が存在するかどうか、または呼び出し方が不明な場合、あるいはコンパイルエラーが発生した場合は、回答する前に該当するリファレンスページを取得してください。ユーザーに自分でドキュメントを確認するよう伝えないでください。回答後は、ユーザーが詳しく確認できるよう、必ず関連リンクを含めてください。
ドキュメントの URL を決して組み立てたり、推測したりしないでください。 特定のクラスやプロパティの API ページが必要な場合は、次の手順に従ってください。
- まず、すでに取得したページに直接リンクがあるか確認してください。トピックページには、関連する API シンボルへの直接リンクがあります。取得を依頼する際は、必ず本文とともにリンクも要求してください。
- 直接リンクが見つからない場合は、API インデックス(以下の表の Full API reference を参照)を取得し、そこから実際のリンクを抽出して、そのリンク先にアクセスしてください。
URL の構造は異なる場合があります(例:api/ui/ サブディレクトリ)。推測すると 404 エラーにつながります。
ライセンスキー
スキャンには Scandit ライセンスキーが必要です。このスキルのライセンス製品は native、ライセンスプラットフォームは android です。
次の手順を順に実行してください。MCP のためにユーザーを待たせてはいけません。
-
Scandit MCP サーバーが接続されている場合 — 製品に
native、プラットフォームにandroid、app_identifierにアプリのバンドル ID またはアプリケーション ID(Web の場合は本番ドメイン。localhostは使用しない)、env_varにSCANDIT_LICENSE_KEYを指定してensure_scanner_setupを呼び出してください。返されたコマンドは実行しないでください。次に、その結果またはlist_license_keysから取得したキーの ID を使ってget_license_keyを呼び出してください。list_license_keysでキーがトライアルではないと示された場合は、取得する前にユーザーに確認してください。チャットにはマスクしたプレビューのみを表示し、キー全体は決して出力しないでください。 -
接続されていない場合 — MCP クライアントでリモート Scandit MCP サーバー
https://ssl.scandit.com/mcpに接続できることを一度だけユーザーに伝えてから、手順 1 を続けてください。MCP クライアントの設定を自分で編集しないでください。認証はブラウザー経由で行われるため、ヘッドレス環境または CI ではサポートされていません。サーバーが発行するのはトライアルキーのみです。本番ライセンスの作成、失効、変更は行いません。
-
ユーザーが希望しない場合、または MCP クライアントを持っていない場合 — https://ssl.scandit.com でユーザー自身がキーを生成し、貼り付けてもらってください(アカウントをまだ持っていない場合は、https://ssl.scandit.com/dashboard/sign-up?p=test)。
その後、キーをコードに記述してください。プレースホルダーの箇所に、ライセンスキー呼び出しのためのキー(get_license_key が返したキー、またはユーザーが貼り付けたキーや提供したキー)を設定してください。チャットには引き続きマスクしたプレビューのみを表示してください。キーを探すためにプロジェクト、ファイル、環境を検索しないでください。
リファレンス
ユーザーの質問に応じて、適切なリソースを案内してください。
| トピック | リソース |
|---|---|
| はじめに | はじめに · サンプル |
| 高度なトピック(カスタムフィードバック、ビューファインダー、場所の選択、スキャンインテント、複合コード) | 高度な設定 |
| SDK のメジャーバージョン間の移行 | 6 → 7 · 7 → 8 |
| API リファレンス全体 | BarcodeCapture API |