【发布时间】:2014-11-07 08:45:43
【问题描述】:
我已按照以下答案执行此操作。 https://stackoverflow.com/a/16252917/2747591
但我没有得到我想做的事情。
当我尝试扫描时,相机拍摄的图像旋转了 90 度。就像您使用相机单击某人的照片一样,然后在我的手机屏幕上显示旋转了 90 度的预览。但这不是我想要的,因为它使条形码扫描难以使用。我想要预览,因为它应该是。 有什么想法吗?
这是我对代码的更改
第 1 步
在 DecodeHandler.java 中,我在 buildLuminanceSource 之前添加了以下代码
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; // Here we are swapping, that's the difference to #11
width = height;
height = tmp;
data = rotatedData;
PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height);
第 2 步
修改了CameraManager.java中的getFramingRectInPreview()
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 步:
在 CameraConfigurationManager.java 的 initFromCameraParameters(...) 中禁用横向模式检查
说明是删除
if (width < height) {
Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect");
int temp = width;
width = height;
height = temp;
}
但我没有在我的相机配置文件中找到此代码。所以无论如何都应该无所谓
第 4 步
在定义参数后,在 CameraConfigurationManager.java 的 setDesiredCameraParameters(...) 中添加以下行来旋转相机
camera.setDisplayOrientation(90);
第 5 步
像这样在我的应用清单文件中将 CaptureActivity 方向从横向更改为纵向
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
【问题讨论】:
-
您知道让客户倒立拍照很困难,那您为什么还要让我们做同样的事情来帮助您呢?没有你的代码,站在我们的头上实际上更容易。 ;)
-
@JeremyMiller 我遵循了与我在顶部提到的上述答案完全相同的程序。这是唯一的代码更改。如果你用过 Zxing,我猜你会明白的。
-
我有并且它有效,所以让我扭转局面:如果你在他们声称完全一样之前帮助过他们的编码,我猜你会明白的。
-
@JeremyMiller 哈哈哈。是的。让我重新编辑问题。 :P
-
@JeremyMiller 你去 :)
标签: android zxing barcode-scanner