Android 条形码、二维码扫描开发总结
来源:互联网 发布:数据库设计原则是什么 编辑:程序博客网 时间:2024/06/05 04:32
我这里主要是以扫描二维码窗口大小为例总结的一点见解,可能很片面,但是先记录着,以后也可更改。
写扫描二维码的程序主要是根据Zxing源码修改相应的代码来得到适合自己的程序。我用来修改的代码也是网上大神简化的源码得来的。主要修改的地方有:
1、CaptureActivity类里面handleDecode(Result obj,Bitmap bitmap)方法,这个方法是用来处理扫描结果的,一般有两个数据,一个字符串信息,一个bitmap图片信息。
2、一般源码上的扫描框是满足不了客户的,所以第二个修改的类是ViewfinderView,
重写view.onDraw()方法。在里面重新画图,paint,bitmap,canvas等都要用到。
3、本来这样也算改好了,运行后发现,那个扫描框好小,但在另一款手机上又刚好,看了下源码,设计扫描框大小的是CameraManager类。它用的是Point screenResolution = configManager.getScreenResolution();来获取屏幕分辨率的。
宽度:int width = screenResolution.x*3/4(屏幕宽度的3/4)
高度:int height = screenResolution.y*3/4(屏幕高度的3/4)
按这样算,应该是不会小的,关键是它后面有个限定扫描框的最大最小值。
int maxWidth = 480;
int maxHeight = 320;
这个大小对于高分辨率的手机来说就很小了。所以个人觉得还是把最大值去掉,就按屏幕大小的百分比来设定扫描框的大小。但我不清楚源码这样设定一个最大值具体作用是什么。
4、现在又有个问题,这个源码默认是横屏扫描的,我们要设置为竖屏的,这就又要改源码了。
1)、在CameraConfigurationManager类setDesiredCameraParameters(Camera camera)方法里添加camera.setDisplayOrientation(90);
2)、在CameraManager类getFramingRectInPreview()方法里将
//横屏模式
rect.left = rect.left * cameraResolution.x / screenResolution.x;
rect.right = rect.right * cameraResolution.x / screenResolution.x;
rect.top = rect.top * cameraResolution.y / screenResolution.y;
rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y;
改成:
//竖屏模式
rect.left = rect.left * cameraResolution.y / screenResolution.x;
rect.right = rect.right * cameraResolution.y / screenResolution.x;
rect.top = rect.top * cameraResolution.x / screenResolution.y;
rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;
3)、在DecodeHandler类里decode()方法里将PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(data, width, height);改成:
byte[] rotatedData = new byte[data.length];
for (int y = 0; y < height; y++) {
for(int x = 0; x < width; x++){
rotatedData[x*height+height-y-1] = data[x+y*width];
}
}
int tmp = width;
width = height;
height = tmp;
PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(rotatedData, width, height);
最后别忘了AndroidManifest文件里属性android:screenOrientation="portrait"
我是Android 新手,上面这些都是网上各种找出来结合自己写的整合了下,给初学者做个参考。
- Android 条形码、二维码扫描开发总结
- android 二维码 条形码扫描
- Android Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- Android ZXing 二维码、条形码扫描介绍
- Android ZXing 二维码、条形码扫描介绍
- Android ZXing 二维码、条形码扫描介绍
- android 二维码,条形码生成与扫描识别
- Android ZXing 二维码、条形码扫描介绍
- Android简易集成二维码,条形码扫描
- Android ZXing 二维码、条形码扫描介绍
- Android ZXing 二维码、条形码扫描介绍
- android二维码、条形码生成与扫描识别
- Android 扫描二维码条形码的链接
- 条形码,二维码扫描
- 条形码,二维码扫描
- iOS 二维码,条形码扫描
- IOS扫描二维码条形码
- 条形码,二维码扫描
- Ajax与服务器交互步骤
- 猜数字游戏
- 项目总结
- 快慢指针 find linkedlist 中间元素
- Ubuntu14.10中连接Win10的smb共享文件
- Android 条形码、二维码扫描开发总结
- 将一个只有字母和空格的字符串,转换为字符串数组.
- android sdk 不能更新
- 插入排序
- python正则表达式惯用法
- 偷窥iPhone Push Notification的幕后
- POJ 1160 Post Office
- hadoop小文件存储优化
- Linked List Cycle