0

zxing ソース コードをライブラリとして使用して、アプリに qr コード スキャン機能を統合しました。私のアクティビティは、Capture Activity を拡張し、Capture Activity クラスの handleDecode メソッドをオーバーライドします。オーバーライド メソッド handleDecode 内の私のコードは次のようになります。

@Override
public void handleDecode(Result rawResult, Bitmap barcode){
String result = rawResult.getText();
if(result==WRONG_CODE){
      //do nothing
}else if(result==RIGHT_CODE){
      //do something
   }
}

アイデアはとてもシンプルです。ユーザーが正しいコードをスキャンした場合は何かを行い、そうでない場合は正しいコードを取得するまでスキャンを続けます。ただし、問題は、zxing スキャナーが 1 回しかスキャンしないことです。返された qr コードが間違っている場合、ユーザーはスキャナーが再度スキャンするためにアクティビティを再開する必要があります。

結果コードが間違っている場合は、このようなことを試しましたが、機能しません。

Hanlder handler = new Handler();
handler.sendEmptyMessageDelayed(R.id.preview_id, CaptureActivity.BULK_MODE_SCAN_DELAY_MS
4

2 に答える 2

0

私は今日この問題を抱えていましたが、sendEmptyMessageDelayed を実行するときに新しいハンドラーを作成する代わりに getHandler() を呼び出すことで解決しました。古い質問なので、これはまったく役に立たないと思いますが、同じ問題を抱えている他の人にとっては..まあ、ここに解決策があります:

   @Override 
   public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) {    
        Toast.makeText(this.getApplicationContext(), "Scanned code " + rawResult.getText(), Toast.LENGTH_LONG).show();      
        getHandler().sendEmptyMessageDelayed(R.id.restart_preview, 1000L);
    }
于 2014-02-04T19:51:49.460 に答える
0

いいえ

new Handler()

いいえ

getHandler()

あなたCaptureActivityの には、 があるはずCaptureActivityHandlerです。そのハンドラーを使用してメッセージを送信します。

于 2014-08-21T03:14:47.500 に答える