ZXing竖屏扫描

zxing实现竖屏扫描

第一步:修改AndroidManifest清单文件,删除AndroidManifest中CaptureActivity的screenOrientation属性:

永昌网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联公司公司2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司

 

 

第二步:删除CaptureActivity中把onResume方法中的无用代码:

 

//        if (prefs.getBoolean(PreferencesActivity.KEY_DISABLE_AUTO_ORIENTATION, true)) {
//            setRequestedOrientation(getCurrentOrientation());
//        } else {
//            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
//        }


第三步:在CaptureActivity中把onCreate方法结尾处添加代码:

 

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {  
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
    } else {  
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
    }
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

第四步:在CameraConfigurationManager的setDesiredCameraParameters方法中添加代码:

camera.setDisplayOrientation(90);//add 这句代码作用是旋转镜头90度,使相机预览方向正确显示  
camera.setParameters(parameters);
camera.setDisplayOrientation(90);//add 这句代码作用是旋转镜头90度,使相机预览方向正确显示
camera.setParameters(parameters);


第五步:修改CameraManager中getFramingRectInPreview方法:

//      rect.left = rect.left * cameraResolution.x / screenResolution.x;  
//      rect.right = rect.right * cameraResolution.x / screenResolution.x;  
//      rect.top = rect.top * cameraResolution.y / screenResolution.y;  
//      rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y;  
  
        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;
//      rect.left = rect.left * cameraResolution.x / screenResolution.x;
//      rect.right = rect.right * cameraResolution.x / screenResolution.x;
//      rect.top = rect.top * cameraResolution.y / screenResolution.y;
//      rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y;

        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;


第六步:修改DecodeHandler中的decode(byte[] data, int width, int height)方法:

PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height);
PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height);

前添加代码

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;  
data = rotatedData;
    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;
    data = rotatedData;

 


分享名称:ZXing竖屏扫描
文章来源:http://myzitong.com/article/jpjgjd.html