我正在构建一个应用程序来使用Android手机中的相机读取vin数字条形码 . 我不知道如何从相机捕获的图像中读取条形码 . (即)是否有任何类读取vin数字格式的条形码.I尝试了zxing和其他libs对我没用 . 谢谢
注意:我尝试在DDG.gg和Stackoverflow中搜索,但没有正确的解决方案 .
According to this thread on google code,zxing应该支持它 . 他们说,问题可能与相机分辨率有关 . 他们提到"auqoniq VIN scanner",这似乎是一个基于zxing的Android应用程序 .
我只是将zxing集成到我的应用程序中作为库,我得到了我的应用程序来正确扫描和解码VIN . 我甚至改变了掩模来扩大可用的扫描区域 .
问题肯定是相机分辨率 . 大而清晰的VINS扫描无故障 . Dingy VINS没有 .
如果不扫描,我正在将我的VIN字段用于手动输入 . 请记住运行校验位方法以确保它是有效的VIN .
我在这里发现了一个:http://introcs.cs.princeton.edu/java/31datatype/VIN.java.html
我已成功使用zxing的源代码解码为有效的VIN字符串,并通过intent将VIN字符串编码回条形码(稍加帮助) .
这是关键 -
http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/
注意,这里也有一个很好的讨论,为什么不应该从开发人员的角度来做这个,但代码是免费开放使用的,我们需要以目前无法通过意图完成的方式修改它 . 我们走了 .
intent.putExtra("SCAN_MODE","ONE_D_MODE");
我实际上已经双向工作(有和没有这条线)但是如果你看到包括它在内的更好的结果,这取决于你 . 我通常得到一个VIN,一旦它在帧中,在不到1/4秒的焦点上进行扫描 .
所以......在CameraConfigurationManager.java中,指定一个更大的 MAX_PREVIEW_PIXELS (不超过你的屏幕分辨率) . 我使用"1024 * 600" - 我的设备分辨率 . 这可能需要一些调整 .
MAX_PREVIEW_PIXELS
在CameraManager.java中
private static final int MAX_FRAME_WIDTH = screenpixelsinteger;
在 public Rect getFramingRect() { 中
public Rect getFramingRect() {
int width
= screenResolution.x * 1
* nothing
* 3 / 4
MAX_FRAME_WIDTH
最后,SCAN!
我不相信我已经编辑过任何其他变量,但如果我发现我做了这项工作,我会更新这个答案 .
3 回答
According to this thread on google code,zxing应该支持它 . 他们说,问题可能与相机分辨率有关 . 他们提到"auqoniq VIN scanner",这似乎是一个基于zxing的Android应用程序 .
我只是将zxing集成到我的应用程序中作为库,我得到了我的应用程序来正确扫描和解码VIN . 我甚至改变了掩模来扩大可用的扫描区域 .
问题肯定是相机分辨率 . 大而清晰的VINS扫描无故障 . Dingy VINS没有 .
如果不扫描,我正在将我的VIN字段用于手动输入 . 请记住运行校验位方法以确保它是有效的VIN .
我在这里发现了一个:http://introcs.cs.princeton.edu/java/31datatype/VIN.java.html
我已成功使用zxing的源代码解码为有效的VIN字符串,并通过intent将VIN字符串编码回条形码(稍加帮助) .
这是关键 -
http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/
注意,这里也有一个很好的讨论,为什么不应该从开发人员的角度来做这个,但代码是免费开放使用的,我们需要以目前无法通过意图完成的方式修改它 . 我们走了 .
intent.putExtra("SCAN_MODE","ONE_D_MODE");
我实际上已经双向工作(有和没有这条线)但是如果你看到包括它在内的更好的结果,这取决于你 . 我通常得到一个VIN,一旦它在帧中,在不到1/4秒的焦点上进行扫描 .
所以......在CameraConfigurationManager.java中,指定一个更大的
MAX_PREVIEW_PIXELS
(不超过你的屏幕分辨率) . 我使用"1024 * 600" - 我的设备分辨率 . 这可能需要一些调整 .在CameraManager.java中
private static final int MAX_FRAME_WIDTH = screenpixelsinteger;
,我的是1000 .在
public Rect getFramingRect() {
中int width
为= screenResolution.x * 1
(或* nothing
),而不是* 3 / 4
. 这样可以将框架矩形加宽到与屏幕分辨率一样宽的范围,但不能超过上面指定的MAX_FRAME_WIDTH
(如果MFW较低,它将被夹紧) .最后,SCAN!
我不相信我已经编辑过任何其他变量,但如果我发现我做了这项工作,我会更新这个答案 .