如何在Blackberry OS 5中实时扫描QR码

5
Google Zxing需要一张图片。有人能指导我如何使其适用于实时扫描(即用户将设备对准QR码,扫描发生;用户不必拍照)吗?我遇到了以下两个方面:
  1. 一些线程建议使用计时器和事件注入来连续拍照 - 但这种方法可能会在设备上产生太多开销
  2. 其他一些线程建议只有在OS6及以上版本中才能进行实时扫描,因为RIM不会在低于6的OS版本中公开这些API - 但我无法找到任何官方声明来证明这一点。

除了Zxing之外,还有其他库可以在BB OS 5上实现相同的功能吗?

提前致谢


zxing本身并不需要图像,它是一个用于扫描的核心库。提供视频流或者不提供视频流取决于应用程序/平台。早期版本的BBOS没有获取预览流的方法。 - Sean Owen
@SeanOwen - 从技术上讲,据我所知,zxing期望一个位图(您可以查看LuminanceSource类)!因此,可以从视频中抓取帧并处理它们!不幸的是,在5及以下的操作系统中无法实现! - Pavan Kulkarni
同意。(我是作者。)你的帖子似乎暗示这个库需要源是图像文件;它不关心。如果你有来自视频源的帧,可以通过一些LuminanceSource使其工作。 - Sean Owen
@SeanOwen - 很高兴能与您互动 :) - Pavan Kulkarni
2个回答

4

这个库允许你在OS5上进行实时扫描。它作为ZXing库的接口工作。

需要注意的是,在OS5设备上,FocusControl没有完全实现,因此近距离扫描条形码会有问题。解决方法是使用VideoControl.getSnapshot(),这是唯一强制相机对焦的方法。


1
这个库完美地工作了,@donturner!谢谢!不过,我应该指出这个库使用了我列出的第一种方法的修改版本——它会定期(每2秒)捕获屏幕截图并处理QR码!听起来不是一个很好的方法,但我想对于OS 5及以下的系统,没有其他选择:( - Pavan Kulkarni

1
要使用“实时扫描”功能,您需要使用条形码API,该API是仅在OS 6.0中可用的ZXing之上的一层。 此处是有关Barcode API的官方说明。在5.0中,您将不得不基于VideoControl实现自定义机制。为了实现解决方法,您可以定期拍摄快照并尝试对其进行解码,或者以某种方式从视频源中捕获帧。
正如其他答案所说,在没有自动对焦的设备上,FocusControl将无法工作。在这种情况下,我建议您应用一些缩放(使用ZoomControl类)。这迫使用户将黑莓移开以便能够在屏幕上看到QRCode,从而增加了捕获图像的清晰度,进而增加了检测条形码的机会。

只是为了澄清,许多OS5设备在其相机硬件上具有自动对焦功能,但OS5 API不允许访问它。 - donturner
@donturner,你说的关于快照的问题是正确的。至于焦点,我在5.0上使用了FocusControl并将其设置为“FocusControl.AUTO”,如果您的设备支持自动对焦,则可以正常工作。从未尝试过任意焦距级别。为了解决近距离模糊的问题,您可以使用“ZoomControl”将缩放设置为最大级别。实际上,这就是Barcode API中实时扫描屏幕所做的。 - Mister Smith
我还没有找到一个可以使用ZoomControl更改缩放的OS5设备,是否有特定的模拟器/设备可以实现这一功能? - donturner
尝试了8900和9780的模拟器,但是zoomControl.getDigitalZoomLevels()总是返回1,缩放级别没有变化。 - donturner
1
另一个测试在运行OS 5.0.0.461的8900上:最大数字变焦200,数字级别数量为6;FocusControl.setFocus(FocusControl.AUTO)有效。 - Mister Smith
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接