前段时间 ,完成一个项目,项目很简单,主要就是 实现一个扫一扫功能,此文章,主要针对此项目 对于 扫一扫功能做一个总结;
1.首先 实现扫一扫功能 ,用的是 zxing。
在网上 关于zxing的导入,资料一大堆,但是都比较复杂,所以 ,我就找了 一个简单的 ,
compile 'com.journeyapps:zxing-android-embedded:3.5.0'//zxing 的二维码扫描依赖库直接 一行代码 搞定 ,里面已经包含了 对权限的申请,同时适配了 7.0 版本 ,大家可以自行参考。
附上 该库的 github地址:
https://github.com/journeyapps/zxing-android-embedded
下面是简单记录一下 ,重要的代码。
2.导入成功之后:
第一步: 点击按钮调用
/** * 跳转扫一扫页面 */ @OnClick(R.id.relative_layout_scan_title) public void onClickScan() { IntentIntegrator integrator = IntentIntegrator.forSupportFragment(TaskReminderFragment.this); // 设置要扫描的条码类型,ONE_D_CODE_TYPES:一维码,QR_CODE_TYPES-二维码 不设置 默认为 全部类型 integrator.setPrompt("将二维码放到框内即可"); //底部的提示文字,设为""可以置空 integrator.setCameraId(0); //前置或者后置摄像头 integrator.setBeepEnabled(true); //扫描成功的「哔哔」声,默认开启 integrator.setBarcodeImageEnabled(true); integrator.setTimeout(1000 * 60);//设置超时时间 integrator.initiateScan();//开始扫描 }此处是以 在fragment中调用为例子;
第二步:
在扫描成功之后的逻辑处理:
/** * 扫一扫 返回的页面 */ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // 获取解析结果 IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (result != null) { if (result.getContents() == null) { App.showToast("取消扫描"); } else { Log.d("111", "二维码扫描结果为:" + result.getContents()); App.getInstance().saveProductId(result.getContents());//保存产品二维码 id //扫描成功之后 进行网络请求 if (StringUtil.isNotEmpty(result.getContents()) && (!(result.getContents() + "").equals("null"))) { Intent intent = new Intent(getActivity(), ScanActivity.class); intent.putExtra("content", result.getContents()); intent.putExtra("type",1);//代表的是 从 扫一扫 扫过去的 startActivity(intent); } else { App.showToast("扫描产品信息有误"); } } } else { super.onActivityResult(requestCode, resultCode, data); } }同时也是写在 fragment页面中
简单的两部操作 就可以实现扫一扫功能了