以前は Jelly Bean のみで出荷されていた MC67NA で実行する Android アプリを既に作成していました。EMDK は KitKat 以降のみをサポートしていたため、すべてのバーコード スキャンを DataWedge 経由で行う必要がありました。ただし、KitKat がリリースされ、KitKat を実行しているデバイスができたので、DataWedge の代わりに EMDK を使用するようにアプリを変更しています。私の質問は、提供されているすべてのサンプルを確認して開始するのに役立ちますが、それらは単一のレイアウト/アクティビティ アプリケーションにも対応していることです。私の既存のアプリケーションには、フラグメントとビュー ページャーのコンテナーとして機能するメイン アクティビティがあります。ビューページャーでアクティブなページである場合、フラグメントのいくつかをスキャンする必要があります。DataWedge を使用すると、フォーカスのあるフィールドをスキャンするだけでよいので、心配する必要がなかったので、これが簡単になりました。
とはいえ、このセットアップで EMDK バーコード スキャナーを実装する最良の方法は何ですか? 多くの人がシングルトン クラスに反対していることは知っていますが、私はこの道を進むことを考えていました。アプリの起動時にスキャナーを実装するシングルトンを作成します。各フラグメントから、インスタンスをスキャナー クラスに取得して使用できます。これについて誰かアドバイスをもらえますか?また、イベント ハンドラーをシングルトンに登録する方法も正確にはわかりません (これが最善の方法であると仮定します)。その後、それらのイベントをフラグメントで発生させます。
さまざまな理由から、DataWedge から離れて EMDK を統合したいと考えています。
最後に、関連するメモとして、このアプローチのコーディングを開始したところ、次の行で例外が発生しています。
EMDKResults results = EMDKManager.GetEMDKManager(Application.Context, this);
例外は次のように述べています。
Java.Lang.ClassNotFoundException: パスにクラス "com.symbol.emdk.EMDKManager" が見つかりませんでした: DexPathList[[zip ファイル "/data/app/PocketPacTracAndroid.PocketPacTracAndroid-2.apk"],nativeLibraryDirectories=[/data/ app-lib/PocketPacTracAndroid.PocketPacTracAndroid-2, /vendor/lib, /system/lib]]
これは、参照を含めたにもかかわらず発生します。
前もって感謝します!
マイク