1

AndroidのQRコードをデコードするためにZxingライブラリを使用しています。QRコードを取得できます。さて、返されるQRコードの種類(URL、電話番号、プレーンテキストなど)をキャッチしたいと思います。ResultParserクラスを探索しようとしましたが、使用できません。

更新: ResultParser クラスを使用して間違った手順を削除しました。

これが私の onActivityResult コードです。

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            contents = intent.getStringExtra("SCAN_RESULT");
        // check the contents strings here 
          //  Need to get actual return type of result 
            if (contents.contains("https:") || contents.contains("http:")) {
                aBarcode.setBarcode_Type(WEB_URL);
                Intent browserIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse(contents));
                startActivity(browserIntent);

            } else {
                aBarcode.setBarcode_Type(PLAIN_TEXT);
                Toast.makeText(getApplicationContext(), contents,
                        Toast.LENGTH_LONG).show();
            }
            barcodeList.add(aBarcode);
            // show previous barcodes detail
            showBarcodeReaderHistory();
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            Log.e("Barcode Result", "Result canceled");
        }
    }
}

更新:次のように ScanActivity を開きます。

// start scan after button click
        btnScanQRCode.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {

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

            }
        });

希望、私はそれをすべてクリアします。あなたの素晴らしいノックを待っています。ありがとうございました。

4

2 に答える 2

2

CaptureActivityライブラリの を変更して、アクティビティに QR コード タイプを取得できます。

アクティビティにデータを返すCaptureActivityメソッド名があり、この行を追加しますhandleDecodeExternally

intent.putExtra("QR_TYPE", getString(resultHandler.getDisplayTitle()));

アクティビティが終了する前に。

そして、この値をアクティビティに取得しますonActivityResult

String type = intent.getStringExtra("QR_TYPE");

最後に、QR コードのタイプがあります。

ありがとうございました

編集

パッケージの下の zixing ライブラリ プロジェクトcom.google.zxing.client.androidには、という名前のアクティビティがありCaptureActivityます。そのアクティビティには、バーコードの内容を簡単に表示し、バーコード スキャナーの外部で結果を処理するmethod名前が付けられています。handleDecodeExternallyその方法には、QR で見つけたデータをアクティビティに送信する意図があります。

このアクティビティを終了する前にその行を追加します。追加後は次のようになります --

      // ------------- Mine Added -------------------
      intent.putExtra("QR_TYPE", getString(resultHandler.getDisplayTitle()));
      // --------------------------------------------

      sendReplyMessage(R.id.return_scan_result, intent); 

sendReplyMessage(R.id.return_scan_result, intent);これは 650 +/- 行で見つかると思いますCaptureActivity。ありがとうございました

于 2013-06-05T07:42:23.877 に答える