在阅读了几个关于这个问题的问题和帖子后,我正在尝试旋转Zxing显示器.按照说明操作后,显示屏确实旋转,但扫描仪的矩形没有按照应有的位置放置(如附图所示).
这就是我所做的:
在CameraConfigurationManager中:
camera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)在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;
Run Code Online (Sandbox Code Playgroud)在CameraManager.java中:
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;
Run Code Online (Sandbox Code Playgroud)
Udi*_*dan 30
在经历了很多挣扎之后,我发现了问题,我希望它能在将来帮助某个人.
在initFromCameraParameters方法中CameraConfigurationManager,假设扫描是ALWAYS in landscape mode,并因此修复时width < height.如果您按照问题中的步骤删除此检查,它可以正常工作.
Rob*_*rto 14
谢谢您的回答!!它确实对我有所帮助,我注意到的一件事是至少在zxing 2.1上你需要将"rotatingData"传递给buildLuminanceSource而不仅仅是"data",这一行最终会像这样:
PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height);
Run Code Online (Sandbox Code Playgroud)
希望这有助于其他人!
至于zxing库:2.2.0对方向变化的支持是固有的
在清单中添加/编辑以下内容:
<activity
android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="fullSensor"
tools:replace="screenOrientation" />
Run Code Online (Sandbox Code Playgroud)
在致电扫描仪时设置其他财产:
IntentIntegrator integrator = new IntentIntegrator(this);
//allows portrait/landscape mode
integrator.setOrientationLocked(false);//"additional property"
integrator.initiateScan();
Run Code Online (Sandbox Code Playgroud)
参考链接:https://github.com/journeyapps/zxing-android-embedded#changing-the-orientation
好吧,我在ProjectLibrary(xzing项目)上进行了一些小改动,并且能够将方向景观改为肖像
在setDesiredCameraParameters method of class CameraConfigurationManager加
camera.setDisplayOrientation(90);
..在我原始项目的AndroidManifest.xml文件中.我设置screenOrientation = portrait它并且它在我的ICS 4.0.3上工作正常
<activity
android:name="com.google.zxing.client.android.CaptureActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden" >
<intent-filter>
<action android:name="com.phonegap.plugins.barcodescanner.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
在CameraConfigurationManager:
camera.setDisplayOrientation(90);
Run Code Online (Sandbox Code Playgroud)在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;
Run Code Online (Sandbox Code Playgroud)在CameraManager.java:
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;
Run Code Online (Sandbox Code Playgroud)在CameraConfigurationManager:
if (width > height) {
Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect");
int temp = width;
width = height;
height = temp;
}
Run Code Online (Sandbox Code Playgroud)更改android:screenOrientation="portrait"的CaptureActivity清单中.
| 归档时间: |
|
| 查看次数: |
35867 次 |
| 最近记录: |