鍍金池/ 問答/Java  Android/ 安卓Zxing 掃碼如何連續(xù)掃碼

安卓Zxing 掃碼如何連續(xù)掃碼

public class KuaidiyuanQrcodeActivity extends Activity implements QRCodeView.Delegate{
        ZXingView mQR;
        LinearLayout kuadiyuanqrcode_back;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_kuaidiyuan_qrcode);
            //設(shè)置結(jié)果處理
            mQR = findViewById(R.id.zx_view);
            mQR.setDelegate(this);//(如果使用的新版本的依賴,使用這個)
            //開始讀取二維碼
            mQR.startSpot();
            init_view();
            init_event();
        }
    private void init_view() {
        kuadiyuanqrcode_back=findViewById(R.id.kuadiyuanqrcode_back);
    }
    private void init_event() {
        kuadiyuanqrcode_back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    /**
         * 掃描二維碼成功
         * @param result 識別的結(jié)果
         */
        @Override
        public void onScanQRCodeSuccess(String result) {
            String code_text=result;
         
    
        }

        /**
         * 打開相機出錯
         */
        @Override
        public void onScanQRCodeOpenCameraError() {
            Toast.makeText(KuaidiyuanQrcodeActivity.this, "打開相機出錯!請檢查是否開啟權(quán)限!", Toast.LENGTH_SHORT).show();
        }

    }



}
回答
編輯回答
荒城

在CaptureActivity類中找到以下方法:

/**

 * Handler scan result
 * 
 * @param result
 * @param barcode
 */
public void handleDecode(Result result, Bitmap barcode)
{
    inactivityTimer.onActivity();
    playBeepSoundAndVibrate();

    String resultString = result.getText();

    doResult(resultString);
}

/**
 * 增加的部分:對掃描返回的結(jié)果進行處理
 */
private void doResult(String result)
{
    if (result.equals(""))
    {
        ToastUtil.showToastByThread(getApplicationContext(),
                "二維碼掃描失敗,請手動輸入!");

    } else
    {
        mHandler.postDelayed(runnable, 1000);
    }

}

/**
 * 增加的部分:實現(xiàn)多次重復(fù)掃描,否則本界面打開一次,只能聚焦一次,掃描一次。增加這一部分之后就能連續(xù)聚焦,連續(xù)掃描
 */
Handler mHandler = new Handler();
Runnable runnable = new Runnable()
{

    @Override
    public void run()
    {
        if (handler != null)
        {
            try
            {
                mHandler.postDelayed(runnable, 1000);

                handler.restartPreviewAndDecode(); // 實現(xiàn)多次掃描

            } catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
};
2017年11月7日 12:48