よし、プロジェクト ソースをダウンロードしてビルドし、自分のデバイスで実行して、問題を発見しました。この問題は、CaptureActivity が情報をシステムのクリップボードに入れるという事実に関連しています。
Galaxy S3 での開発中の私の経験では、Samsung のクリップボード サービスの実装で複数の問題に遭遇しました。つまり、クリップボード サービスを取得する要求が null を返すという事実です。
とにかく、ZXing の CaptureActivity 内には、次のコード行があります。
if (copyToClipboard && !resultHandler.areContentsSecure()) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
if (displayContents != null) {
clipboard.setText(displayContents);
}
}
残念ながら、クリップボード変数が null であるため、アプリケーションは null ポインター例外でクラッシュします。コードのこの部分をコメントアウトしたところ、アプリケーションは問題なく動作するように見えました。ここにヌルチェックを追加するだけで、S3 での問題を防ぎながら、他のデバイスで機能を維持できると思います。また、アプリケーションの他の部分は、このデータがクリップボードに入力されることに依存していないと想定しています。ただし、アプリケーションのソース コードのすべてに精通しているわけではないので、これについては確信が持てません。
ZXing を自分のプロジェクトに統合する試みを続け、この修正が機能するかどうかを確認します。
今、誰か (Samsung だと思います) だけが S3 のクリップボードの実装を修正してくれるなら!
アップデート:
この問題に対していくつかの回避策を試しました。単純な null チェックや非推奨でないメソッド (zxing は現在非推奨のクリップボード メソッドを使用しています) の使用などですが、残念ながらどれもうまくいきませんでした。null であるのは ClipboardManager 自体ではなく、null である内部のメンバー変数のようです。繰り返しますが、これは S3 に固有のものであると推測しています。これは、この問題が発生した唯一の電話です。
残念ながら、私にとって現在の最良の選択肢は、クリップボードへの参照を完全に削除することです。