Android Zbar掃描

我找AndroidZbar的代碼找了好久,兄弟們有福了,這是github上的一個基于Zbar的開源庫BGAQRCode(這個庫封裝的很棒),簡書不能添加文件(反正我沒找到),所以代碼就不提供了,自己去github下

代碼結構:

Paste_Image.png

你可以先運行,看下得到的app,反正我沒用過zbar,但是看完demoApp就會改代碼了,你把它鑲嵌入自己的app最多2小時

主要用到的東西:

MainActivity.java

其實就是跳轉界面

TestScanActivity

     public class TestScanActivity extends AppCompatActivity implements QRCodeView.Delegate {
    private static final String TAG = TestScanActivity.class.getSimpleName();

    private QRCodeView mQRCodeView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_scan);
        setSupportActionBar((Toolbar) findViewById(R.id.toolbar));

        mQRCodeView = (ZBarView) findViewById(R.id.zbarview);
        mQRCodeView.setDelegate(this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        mQRCodeView.startCamera();
    }

    @Override
    protected void onStop() {
        mQRCodeView.stopCamera();
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        mQRCodeView.onDestroy();
        super.onDestroy();
    }
    private void vibrate() {
        Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        vibrator.vibrate(200);
    }
//下面這個方法就是返回掃描結果的
    @Override
    public void onScanQRCodeSuccess(String result) {
        Log.i(TAG, "result:" + result);
        Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
        vibrate();
        mQRCodeView.startSpot();
    }

    @Override
    public void onScanQRCodeOpenCameraError() {
        Log.e(TAG, "打開相機出錯");
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.start_spot:
                mQRCodeView.startSpot();
                break;
            case R.id.stop_spot:
                mQRCodeView.stopSpot();
                break;
            case R.id.start_spot_showrect:
                mQRCodeView.startSpotAndShowRect();
                break;
            case R.id.stop_spot_hiddenrect:
                mQRCodeView.stopSpotAndHiddenRect();
                break;
            case R.id.show_rect:
                mQRCodeView.showScanRect();
                break;
            case R.id.hidden_rect:
                mQRCodeView.hiddenScanRect();
                break;
            case R.id.start_preview:
                mQRCodeView.startCamera();
                break;
            case R.id.stop_preview:
                mQRCodeView.stopCamera();
                break;
            case R.id.open_flashlight:
                mQRCodeView.openFlashlight();
                break;
            case R.id.close_flashlight:
                mQRCodeView.closeFlashlight();
                break;
            case R.id.scan_barcode:
                mQRCodeView.changeToScanBarcodeStyle();
                break;
            case R.id.scan_qrcode:
                mQRCodeView.changeToScanQRCodeStyle();
                break;
        }
    }    ```
###R.layout.activity_test_scan

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MatchMatch">

<cn.bingoogolapple.qrcode.zbar.ZBarView
    android:id="@+id/zbarview"
    style="@style/MatchMatch"
    app:qrcv_animTime="1000"
    app:qrcv_barCodeTipText="將條碼放入框內(nèi),即可自動掃描"
    app:qrcv_barcodeRectHeight="140dp"
    app:qrcv_borderColor="@android:color/white"
    app:qrcv_borderSize="1dp"
    app:qrcv_cornerColor="@color/colorPrimaryDark"
    app:qrcv_cornerLength="20dp"
    app:qrcv_cornerSize="3dp"
    app:qrcv_customGridScanLineDrawable="@mipmap/custom_grid_scan_line"
    app:qrcv_isBarcode="false"
    app:qrcv_isOnlyDecodeScanBoxArea="false"
    app:qrcv_isShowDefaultGridScanLineDrawable="true"
    app:qrcv_isShowDefaultScanLineDrawable="true"
    app:qrcv_isShowTipBackground="true"
    app:qrcv_isShowTipTextAsSingleLine="false"
    app:qrcv_isTipTextBelowRect="false"
    app:qrcv_maskColor="#33FFFFFF"
    app:qrcv_qrCodeTipText="將二維碼/條碼放入框內(nèi),即可自動掃描"
    app:qrcv_rectWidth="200dp"
    app:qrcv_scanLineColor="@color/colorPrimaryDark"
    app:qrcv_toolbarHeight="56dp"
    app:qrcv_topOffset="90dp" />
<include layout="@layout/toolbar"/>
<include layout="@layout/view_control"/>

</RelativeLayout>```

基本只要改這上邊兩個類,代碼比zxing簡單N倍,掃描速度也夠快是zxing的3~5倍(我覺得用zxing的公司可能做了大量代碼算法優(yōu)化,所以他們用zxing),畢竟Zbar基于c,對于單純的對掃描速度的有要求,就算我們們不優(yōu)化代碼,也滿足我們的需要

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容