【问题标题】:Zxing barcode integeration: The constructor IntentIntegrator() is undefinedZxing条码整数化:构造函数IntentIntegrator()未定义
【发布时间】:2023-03-26 08:20:01
【问题描述】:

我正在尝试集成 Zxing 库,并使用我的应用程序中的条形码扫描仪。

所以,下载了两个java文件IntentIntegrator和IntentResult,放到这个包里:

com.google.zxing.integration

我的应用在这个包中的位置:

com.example.mindstormsgamepad

我在活动中使用的代码是:

package com.example.mindstormsgamepad;

import com.google.zxing.integration.IntentIntegrator;
import com.google.zxing.integration.IntentResult;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.widget.Button;
import android.widget.TextView;

/**
 * BarcodeScan Activity
 */

    public class BarcodeScanActivity extends CommonActivity implements OnClickListener{ 

        /** Debug */
        protected String TAG_SUB = "BarcodeScanActivity";

        private Button scanBtn;
        private TextView formatTxt, contentTxt;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            initTabSub( TAG_SUB );  
            log_d( "onCreate" );        
            super.onCreate( savedInstanceState );
            /* set the layout on the screen */
            View view = getLayoutInflater().inflate( R.layout.activity_barcode_scan, null );
            setContentView( view ); 

            /* Initialization of Bluetooth */
            initManager( view );
            setTitleName( R.string.activity_barcodescan );
            initButtonBack();
            initInputDeviceManager();

          Toast.makeText(BarcodeScanActivity.this, "QR Scan!", Toast.LENGTH_SHORT).show();


            /* Initialization of Scanning */
          scanBtn = (Button)findViewById(R.id.scan_button);
          formatTxt = (TextView)findViewById(R.id.scan_format);
          contentTxt = (TextView)findViewById(R.id.scan_content);
          scanBtn.setOnClickListener(this);

        }

    // --- onCreate end ---

        /**
         * === onResume ===
         */
        @Override
        public void onResume() {
            log_d( "onResume()" );
            super.onResume();
            startService();
            mInputDeviceManager.register(); 
        }

        /**
         * === onPause ===
         */
        @Override
        public void onPause() {
            log_d( "onPause()" );
            super.onPause();
            sendStop();
            mInputDeviceManager.unregister();
        }

        @Override
        public void onClick(View v) {
            // Start Scan
            if(v.getId()==R.id.scan_button){

                IntentIntegrator scanIntegrator = new IntentIntegrator(this);
                scanIntegrator.initiateScan();

            }
        }


            public void onActivityResult(int requestCode, int resultCode, Intent intent) {
                //retrieve scan result
                IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
                if (scanningResult != null) {
                    //we have a result
                    String scanContent = scanningResult.getContents();
                    String scanFormat = scanningResult.getFormatName();
                    formatTxt.setText("FORMAT: " + scanFormat);
                    contentTxt.setText("CONTENT: " + scanContent);

                    }else{
                    Toast toast = Toast.makeText(getApplicationContext(), 
                        "No Barcode data received!", Toast.LENGTH_SHORT);
                    toast.show();
                }
                }
    }

但是我收到了这个错误, 构造函数 IntentIntegrator(BarcodeScanActivity) 未定义

IntentIntegrator类型中的initialScan(Activity)方法不适用于参数()

在这些方面:

        IntentIntegrator scanIntegrator = new IntentIntegrator(this);
        scanIntegrator.initiateScan();

我是安卓编程新手, 如何解决这个问题?

感谢您的帮助。

【问题讨论】:

    标签: android integration barcode zxing


    【解决方案1】:

    试试这个:

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

    对于结果做onActivityResult方法中的代码

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
            Toast.makeText(getActivity(), "result ", 1000).show();
            if (requestCode == 0) {
    
                if (resultCode == RESULT_OK) {
                    //do code here
                }
    
                else if (resultCode == RESULT_CANCELED) {
                    //do code here
                }
            }
    

    【讨论】:

    • 非常感谢。它确实有效,扫描仪开始工作。但条形码数据仅显示在相机中。如何将其发送回“startActivityForResult”并在应用程序本身中显示。
    • 实现onActivityResult
    • 这只是不太完全地重新实现 IntentIntegrator。它没有找到 OP 的根本原因。
    • 为了更好的使用 ZBarScannerActivity Lib。这是下载库的链接github.com/dm77/ZBarScanner
    • @user3243147 完美。 ZBarScanner 工作轻松。谢谢你的帮助。
    【解决方案2】:

    这意味着您的 Activity 最终不会扩展 android.app.Activity。看看 CommonActivity 扩展了什么。否则,您可能以某种方式拥有 IntentIntegrator 的旧副本或错误副本。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多