zxing二維碼不可以多次掃描
阿新 • • 發佈:2019-02-04
給大家看一下效果圖:
最近公司開發一個專案,一個購物的專案。用到了掃描獲取條形碼,挺簡單網上案例比較多,去誰那裡有可能copy一大堆,但是往往他就是一個演示的Demo和你的有很多差距,所以這就需要我們動腦子思考了,我們首先拿到人家的專案不要著急往自己的專案裡copy。我們先執行一遍人家的,看一下方法和他的思路,我們開發主要還是思維和邏輯,不能總copy人家程式碼吧? 首先拿到人家專案二維碼只可以掃一次 就返回了主介面 我就進行除錯看他究竟執行那裡程式碼,後來我發現他會把你的獲取的值傳給一個Handler然後傳到執行緒池中了,蒙了我也是新手。好吧不懂了,給我幹到了底層去了,但是回過來一想,我不就是獲取結果,然後傳給handler嗎?為什麼我不在返回資料後再執行這個方法呢。 哇哦果然成了。
Mip'ca'Activity'Capture類中
程式碼如下:
為什麼要寫一個handler呢!如果不寫的話他會掃描很多次這個資料 所以我就讓他3秒之後再描掃 ok解決額/** * 處理掃描結果 * @param result * @param barcode */ public void handleDecode(Result result, Bitmap barcode) { inactivityTimer.onActivity(); playBeepSoundAndVibrate(); String resultString = result.getText(); if (resultString.equals("")) { Toast.makeText(MipcaActivityCapture.this, "Scan failed!", Toast.LENGTH_SHORT).show(); } else { mList.add(resultString); initfindview(); mHandler.postDelayed(runnable, 3000); } } Handler mHandler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { // handler自帶方法實現定時器 try { if (handler != null) mHandler.postDelayed(runnable,3000); handler.restartPreviewAndDecode(); //實現多次掃描 System.out.println("do..."); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("exception..."); } } };
我們專案就是把掃描的結果傳遞帶Listview上 可以手動輸入也可以開啟手電筒 如果需要的小夥伴郵箱發到評論裡我看到會及時給你發過去