我在Zxing Camera in Portrait mode on Android上按照说明一步一步地在用户使用zxing相机时显示肖像。
但它不会奏效。扫描仪仍然以横向模式出现。 我认为这是因为我使用的是Zxing的最新版本(v3.2.0),并且该指令已被弃用。
如何在v3.2.0 Zxing中完成?
无论如何,以下是我尝试过的步骤:
代码:
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);
代码:
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;
}
代码:
camera.setDisplayOrientation(90);
代码:
android:screenOrientation="portrait"
答案 0 :(得分:0)
在做了几天的试验和错误之后,这是我的工作解决方案:
需要额外的工作,让我们说第6步。无论如何都要设置纵向。它起作用了。
第6步。 修改 CaptureActivity.java
中的onResumeif (prefs.getBoolean(PreferencesActivity.KEY_DISABLE_AUTO_ORIENTATION, true)) {
//setRequestedOrientation(getCurrentOrientation()); // mark this line
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); // mark this line
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}