android-zxingLibrary icon indicating copy to clipboard operation
android-zxingLibrary copied to clipboard

Nexus 5x 6.0系统,部分三星机器,扫描框扫出来的图像颠倒

Open ysygit123 opened this issue 9 years ago • 10 comments

Nexus 5x 6.0系统,部分三星机器,扫描框扫出来的图像颠倒,难道是需要配置什么参数

ysygit123 avatar Nov 08 '16 15:11 ysygit123

+1

wenwenwen888 avatar Nov 28 '16 11:11 wenwenwen888

+1

zhougz9527 avatar Dec 08 '16 01:12 zhougz9527

我的一个6.0系统的机器,也出现了图像颠倒的问题,是怎么回事 @yipianfengye

iamyuzhe avatar Dec 14 '16 07:12 iamyuzhe

修改部分源代码后解决问题:

` 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 avatar Dec 22 '16 03:12 wangran99

这个要在哪里改? @wangran99

iamyuzhe avatar Jan 03 '17 03:01 iamyuzhe

@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;
}

lnpusong123 avatar Jan 12 '17 05:01 lnpusong123

在解码的地方也要转成固定角度吧。不然解码偏移了。

jiechic avatar Feb 08 '17 02:02 jiechic

@wangran99 哥们 你好,还在关注这个库吗。现在也碰到这个问题,照你说的修改后,摄像头方向显示正确了,但是扫描很不给力额。很难扫出来,请问有其他啥办法没

GuoZhaoHui628 avatar Mar 28 '19 02:03 GuoZhaoHui628

@wangran99 哥们 你好,还在关注这个库吗。现在也碰到这个问题,照你说的修改后,摄像头方向显示正确了,但是扫描很不给力额。很难扫出来,请问有其他啥办法没

忽然收到个邮件,发现我居然还回复这个了,我改用BGA的扫码了,封装得不错。一个view解决问题。zxing,zbar版本都有。

jiechic avatar Mar 28 '19 03:03 jiechic

@jiechic 好的 我了解下,谢谢你

GuoZhaoHui628 avatar Mar 28 '19 03:03 GuoZhaoHui628