RFID+二维码扫描
来源:互联网 发布:oracle数据库试题 编辑:程序博客网 时间:2024/05/18 13:24
很久没有更新博客了,前一段时间对之前的RFID扫描APP做了一次更新,加入了扫描二维码的功能,界面也做了相应的变动,如图。
主界面:
扫描二维码界面:
接下来分三个部分描述此次改动,1.第三方库文件。2.如何将第三方库文件整合到自己的项目中。3.对第三方库文件的一些改动。
- 第三方库文件——大神对Zxing项目的剪裁,BarCodeTest
这个库文件是对GitHub上的Zxing项目的剪裁,去掉了一些用不到的功能,只保留了QR码的二维码解码方式,不过一般情况下足够使用。网上有很多地方提供这个项目的下载,或者可以留言邮箱我发送给你。其中Zxing的目录下共有5个子目录:activity,camera,decoding,encoding,view。其中activity是扫描界面的部分,可以在此修改扫描界面的显示和控件的监控。view是自定义的二维码图片捕捉的控件,可以在此修改那个控件的大小和显示效果。 - 整合
这部分可以参考http://www.cnblogs.com/neozhu/p/3458759.html这篇文章,着重说一点,由于Android Studio是通过Gradle编译的,所以必须在BarCodeTest中加入build.gradle文件,这个文件的具体内容跟自己的项目有关,最主要的是一些参数的设置,可以参考我这个。
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' }}apply plugin: 'com.android.library'repositories { mavenCentral()}android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 15 targetSdkVersion 23 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] renderscript.srcDirs = ['src'] } }}dependencies { compile 'com.android.support:appcompat-v7:23.1.1' compile files('libs/zxing.jar')}
3 . 对库文件的修改
- 实现连续扫描
项目默认的扫描方式是单次扫描,对其中部分代码进行改动,实现连续扫描。
// 连续扫描的设置 private Handler mHandler; ...// 初始化Handler和Task mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { continuePreview(); } } };public void handleDecode(Result result, Bitmap barcode) {// 定时重新扫描 Message msg = new Message(); msg.what = 1; mHandler.sendMessageDelayed(msg, 1000);}/* * 连续扫描 */ private void continuePreview(){ SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); initCamera(surfaceHolder); if (handler != null){ handler.restartPreviewAndDecode(); }}
注意,hander.restartPreviewAndDecode()是私有方法,需要将其改为public
2. 库文件中二维码扫描activity和原app的参数传递
由于项目需要,必须实现点开二维码扫描后实现连续扫描并将结果进行处理,这就使得使用startActivityForResult的方式行不通,最后决定使用广播来解决这个问题,具体代码如下:
二维码扫描部分:
public void handleDecode(Result result, Bitmap barcode) {if (resultString.equals("")) { Toast.makeText(CaptureActivity.this, "Scan failed!", Toast.LENGTH_SHORT).show(); }else { // 发送广播 Intent i = new Intent(Broadcast); i.putExtra("cld", resultString); sendBroadcast(i); }}
原app接收部分:
// Broadcast接收 BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String cldstr = intent.getExtras().getString("cld"); CLD cld = CLDLab.getCLDLab(getApplicationContext()).addCLD(cldstr, mActionstr); mListAdapter.notifyDataSetChanged(); Httpthread thread = new Httpthread(cld); thread.start(); } }; IntentFilter filter = new IntentFilter(Broadcast); registerReceiver(receiver, filter);
0 0
- RFID+二维码扫描
- RFID扫描APP Android
- RFID扫描APP--source1
- RFID扫描APP--source2
- RFID扫描APP--source3
- RFID扫描APP--source4
- RFID扫描APP--source5
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 二维码扫描
- 扫描二维码
- 二维码扫描
- android ble 蓝牙4.0多机通讯客户端实现
- 绘制Objective-C程序的UML类图
- 本地推送及远程推送
- 后缀数组模板
- iOS-UI-基本控件之UIButton
- RFID+二维码扫描
- Unity3D Shader官方教程翻译(一)
- JDK5News
- 有一个桶,里面有白球、黑球各100个,人们必须按照以下的规则把球取出来:
- Cpp_动态内存分配
- 将森林转化成二叉树并在iPhone上显示
- 类和对象
- UVA 11627 - Slalom(二分)
- TQ2440,学习笔记之寻址方式