android-zxingLibrary
android-zxingLibrary copied to clipboard
Nexus 5x 6.0系统,部分三星机器,扫描框扫出来的图像颠倒
Nexus 5x 6.0系统,部分三星机器,扫描框扫出来的图像颠倒,难道是需要配置什么参数
+1
+1
我的一个6.0系统的机器,也出现了图像颠倒的问题,是怎么回事 @yipianfengye
修改部分源代码后解决问题:
` public void openDriver(Activity activity, SurfaceHolder holder) throws IOException { if (camera == null) { camera = Camera.open(); if (camera == null) { throw new IOException(); } android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo(); android.hardware.Camera.getCameraInfo (0 , info); int rotation = activity.getWindowManager ().getDefaultDisplay ().getRotation (); int degrees = 0; switch (rotation) { case Surface.ROTATION_0: degrees = 0; break; case Surface.ROTATION_90: degrees = 90; break; case Surface.ROTATION_180: degrees = 180; break; case Surface.ROTATION_270: degrees = 270; break; } int result; if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { result = (info.orientation + degrees) % 360; result = (360 - result) % 360; // compensate the mirror } else { // back-facing result = ( info.orientation - degrees + 360) % 360; } camera.setDisplayOrientation (result); camera.setPreviewDisplay(holder);
if (!initialized) {
initialized = true;
configManager.initFromCameraParameters(camera);
}
configManager.setDesiredCameraParameters(camera);
//FIXME
// SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
//�Ƿ�ʹ��ǰ��
// if (prefs.getBoolean(PreferencesActivity.KEY_FRONT_LIGHT, false)) { // FlashlightManager.enableFlashlight(); // } FlashlightManager.enableFlashlight(); } }`
这个要在哪里改? @wangran99
@bruceyu1994 改这个文件com.uuzuche.lib_zxing.camera.CameraConfigurationManager中的setDesiredCameraParameters方法,作者好像写成固定旋转角度了。 https://github.com/yipianfengye/android-zxingLibrary/blob/master/lib-zxing/src/main/java/com/uuzuche/lib_zxing/camera/CameraConfigurationManager.java
将camera.setDisplayOrientation(90);改成 camera.setDisplayOrientation(getDisplayOrientation());
public int getDisplayOrientation() {
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(Camera.CameraInfo.CAMERA_FACING_BACK, info);
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int rotation = display.getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0:
degrees = 0;
break;
case Surface.ROTATION_90:
degrees = 90;
break;
case Surface.ROTATION_180:
degrees = 180;
break;
case Surface.ROTATION_270:
degrees = 270;
break;
}
int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360;
} else {
result = (info.orientation - degrees + 360) % 360;
}
return result;
}
在解码的地方也要转成固定角度吧。不然解码偏移了。
@wangran99 哥们 你好,还在关注这个库吗。现在也碰到这个问题,照你说的修改后,摄像头方向显示正确了,但是扫描很不给力额。很难扫出来,请问有其他啥办法没
@wangran99 哥们 你好,还在关注这个库吗。现在也碰到这个问题,照你说的修改后,摄像头方向显示正确了,但是扫描很不给力额。很难扫出来,请问有其他啥办法没
忽然收到个邮件,发现我居然还回复这个了,我改用BGA的扫码了,封装得不错。一个view解决问题。zxing,zbar版本都有。
@jiechic 好的 我了解下,谢谢你