我正在使用流行的ZXing项目在我的安卓应用程序上启用条形码扫描。
我想手动设置取景器的宽度和高度,所以我使用了以下方法:
intent.putExtra("SCAN_WIDTH", 400);
intent.putExtra("SCAN_HEIGHT", 300);在发送我的意图之前。然而,由于NullPointerException在CameraManager.java的第279行,应用程序崩溃了。我做了一些调试,看起来configManager的configManager成员从未初始化过。我调试了更多,以发现surfaceCreated()没有及时调用(这应该通过回调来完成)。至少,这在我看来是一样的,因为surfaceCreated() in CaptureActivity.java负责初始化configManager的那些成员。我在这里和谷歌上做了一些搜索,但似乎人们并没有使用那些意图附加的SCAN_WIDTH和SCAN_HEIGHT。它们正在手动设置MIN和MAX宽度/高度值,这是我试图避免的ZXing代码中的值。任何帮助都将不胜感激。
当我没有通过意图设置那些宽度/高度值时,扫描仪工作得很好。
编辑:更新了我的ZXing库版本后,这不再是一个问题了。它还解决了我与2012年Nexus 7的前置摄像头问题。
发布于 2015-01-08 19:54:49
screenResolution无疑是在initFromCameraParameters中设置的。当司机打开的时候就会发生。如果surfaceCreated发生得晚了一点,也可以,因为onResume方法在创建曲面之后注册一个回调来初始化相机,如果它还没有可用的话。
即使没有初始化,onResume也会调用setManualFramingRect,但在这种情况下,它只会将请求保存在requestedFramingRectWidth和requestedFramingRectHeight中,并在稍后进行设置。
我认为这个案子处理得很正确,但我不能百分之百地肯定没有疏忽。也许你可以说出更多关于你认为问题在哪里给出的信息。
https://stackoverflow.com/questions/27846130
复制相似问题