【发布时间】:2016-05-23 11:51:57
【问题描述】:
我按照Zxing Camera in Portrait mode on Android的指示一步一步地在用户使用zxing相机时显示人像。
但这行不通。扫描仪仍以横向模式出现。 我认为这是因为我使用的是 Zxing 的最新版本 (v3.2.0) 并且该指令已被弃用。
如何在 v3.2.0 Zxing 中做到这一点?
无论如何,以下是我尝试过的步骤:
- 修改 buildLuminanceSource(..) DecodeHandler.java
代码:
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;
width = height;
height = tmp;
PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height);
- 在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;
-
在 CameraConfigurationManager.java 中修改 initFromCameraParameters(...)
在Zxing(v3.2.0)中,没有找到如下代码
代码:
//remove the following
if (width < height) {
Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect");
int temp = width;
width = height;
height = temp;
}
- 在 CameraConfigurationManager.java 的 setDesiredCameraParameters(...) 中添加以下行以旋转相机
代码:
camera.setDisplayOrientation(90);
- 在我的项目中,修改AndroidManifest.xml
代码:
android:screenOrientation="portrait"
【问题讨论】:
标签: android eclipse zxing landscape-portrait portrait