美文网首页
可自定义ZXing二维码扫描

可自定义ZXing二维码扫描

作者: 啤酒小龙虾 | 来源:发表于2018-06-05 12:06 被阅读0次

1.依赖导入

//二维码扫描

compile'com.journeyapps:zxing-android-embedded:3.5.0'

        github地址:https://github.com/journeyapps/zxing-android-embedded

2.在Activity 或者Fragment中初始化

new IntentIntegrator(CallByctivity.this)

.setCaptureActivity(ScannAvtivity.class)// 设置自己的Activity

        .setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES)// 扫码的类型,可选:一维码,二维码,一/二维码

        .setPrompt("")// 设置提示语  如果不设置会提示它默认的字,我在这里设置为空串

        .setCameraId(1)// 选择摄像头,可使用前置或者后置 //0后置 ,1 前置

        .setBeepEnabled(true)// 是否开启声音,扫完码之后会"哔"的一声

        .setBarcodeImageEnabled(false)// 扫完码之后生成二维码的图片

        .initiateScan();// 初始化扫码

3.在onActivityResult方法中接收 扫描到的数据

IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

if (result !=null) {

if (result.getContents() ==null) {

Log.d("CallByctivity","被取消");

}else {

Log.d("CallByctivity","扫描的" + result.getContents());

scannNumber++;

Log.d("CallByctivity","扫描到了" +scannNumber +"次");

EventBus.getDefault().post(new ScannEvent(scannNumber));

//再次打开扫描页

        scann();  //启动扫描的方法

//因为项目需求重复扫描商品,并且记录扫描次数。这里我用EventBus传扫描次数,扫描完成后,我从新打开扫描页面

}

}else {

super.onActivityResult(requestCode, resultCode, data);

}

4.自定义扫描页面

public class CustomCaptureActivityextends Activity {

private CaptureManagercapture;

private DecoratedBarcodeViewbarcodeScannerView;

@Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_custom);

barcodeScannerView = (DecoratedBarcodeView) findViewById(R.id.bv);

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {

@Override

            public void onClick(View view) {

CustomCaptureActivity.this.finish();

}

});

capture =new CaptureManager(this,barcodeScannerView);

capture.initializeFromIntent(getIntent(), savedInstanceState);

capture.decode();

}

@Override

    protected void onResume() {

super.onResume();

capture.onResume();

}

@Override

    protected void onPause() {

super.onPause();

capture.onPause();

}

@Override

    protected void onDestroy() {

super.onDestroy();

capture.onDestroy();

}

@Override

    protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

capture.onSaveInstanceState(outState);

}

@Override

    public void onRequestPermissionsResult(int requestCode,@NonNull String permissions[],@NonNull int[] grantResults) {

capture.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

@Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {

return barcodeScannerView.onKeyDown(keyCode, event) ||super.onKeyDown(keyCode, event);

}

}

//这里没有放自己的扫描页面,我放的demo测试写的页面。

5.自定义xml文件

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

<com.journeyapps.barcodescanner.DecoratedBarcodeView

        android:id="@+id/bv"

        android:layout_width="match_parent"

        android:layout_height="400dp" />

<Button

        android:id="@+id/button"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="结束页面" />

相当简单的扫码自定义控件

相关文章

网友评论

      本文标题:可自定义ZXing二维码扫描

      本文链接:https://www.haomeiwen.com/subject/fbepsftx.html