手动设置 SCAN_WIDTH 和 SCAN_HEIGHT 导致 ZXing 崩溃
Manually setting the SCAN_WIDTH and SCAN_HEIGHT causes ZXing to crash
我正在使用流行的 ZXing 项目在我的 Android 应用程序上启用条码扫描。
我想手动设置取景器的宽度和高度,所以我使用了以下内容:
intent.putExtra("SCAN_WIDTH", 400);
intent.putExtra("SCAN_HEIGHT", 300);
在发送我的意图之前。但是,由于 CameraManager.java
中第 279 行的 NullPointerException
,应用程序崩溃了。我做了一些调试,看起来 configManager
的 screenResolution
成员从未被初始化。我调试了一些,发现 surfaceCreated()
没有及时调用(这应该通过回调来完成)。至少,在我看来是这样,因为 CaptureActivity.java
中的 surfaceCreated()
负责初始化 configManager
的那些成员。我在此处和 Google 上进行了一些搜索,但似乎人们并没有使用这些额外的意图 SCAN_WIDTH
和 SCAN_HEIGHT
。他们在 ZXing 代码中手动设置 MIN
和 MAX
width/height 值,我试图避免这种情况。任何帮助将不胜感激。
当我没有通过 intent 设置那些 width/height 值时,扫描仪工作正常。
编辑: 更新我的 ZXing 库版本后,这不再是问题。它还解决了我在使用 2012 Nexus 7 时遇到的前置摄像头问题。
screenResolution
肯定是设置的,在initFromCameraParameters
。它发生在驱动程序打开时。如果 surfaceCreated
稍晚发生也没关系,因为 onResume
方法会注册一个回调以在创建表面后初始化相机(如果它尚不可用)。
onResume
调用 setManualFramingRect
即使它没有初始化,但是,在那种情况下它只是将请求保存在 requestedFramingRectWidth
和 requestedFramingRectHeight
中并稍后设置。
我认为此案处理得当,但一如既往,我不能 100% 确定没有疏忽。也许您可以详细说明您认为问题出在哪里。
我正在使用流行的 ZXing 项目在我的 Android 应用程序上启用条码扫描。
我想手动设置取景器的宽度和高度,所以我使用了以下内容:
intent.putExtra("SCAN_WIDTH", 400);
intent.putExtra("SCAN_HEIGHT", 300);
在发送我的意图之前。但是,由于 CameraManager.java
中第 279 行的 NullPointerException
,应用程序崩溃了。我做了一些调试,看起来 configManager
的 screenResolution
成员从未被初始化。我调试了一些,发现 surfaceCreated()
没有及时调用(这应该通过回调来完成)。至少,在我看来是这样,因为 CaptureActivity.java
中的 surfaceCreated()
负责初始化 configManager
的那些成员。我在此处和 Google 上进行了一些搜索,但似乎人们并没有使用这些额外的意图 SCAN_WIDTH
和 SCAN_HEIGHT
。他们在 ZXing 代码中手动设置 MIN
和 MAX
width/height 值,我试图避免这种情况。任何帮助将不胜感激。
当我没有通过 intent 设置那些 width/height 值时,扫描仪工作正常。
编辑: 更新我的 ZXing 库版本后,这不再是问题。它还解决了我在使用 2012 Nexus 7 时遇到的前置摄像头问题。
screenResolution
肯定是设置的,在initFromCameraParameters
。它发生在驱动程序打开时。如果 surfaceCreated
稍晚发生也没关系,因为 onResume
方法会注册一个回调以在创建表面后初始化相机(如果它尚不可用)。
onResume
调用 setManualFramingRect
即使它没有初始化,但是,在那种情况下它只是将请求保存在 requestedFramingRectWidth
和 requestedFramingRectHeight
中并稍后设置。
我认为此案处理得当,但一如既往,我不能 100% 确定没有疏忽。也许您可以详细说明您认为问题出在哪里。