ZXing竖屏扫描
第一步:修改AndroidManifest清单文件,删除AndroidManifest中CaptureActivity的screenOrientation属性:
<activityandroid:name=".CaptureActivity"android:screenOrientation="landscape"android:clearTaskOnLaunch="true"android:stateNotNeeded="true"android:theme="@style/CaptureTheme"android:windowSoftInputMode="stateAlwaysHidden">
<activityandroid:name=".CaptureActivity"android:screenOrientation="portrait"android:clearTaskOnLaunch="true"android:stateNotNeeded="true"android:theme="@style/CaptureTheme"android:windowSoftInputMode="stateAlwaysHidden">
第二步:删除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)方法:
在
PlanarYUVLuminanceSourcesource=activity.getCameraManager().buildLuminanceSource(data,width,height);
PlanarYUVLuminanceSourcesource=activity.getCameraManager().buildLuminanceSource(data,width,height);
前添加代码
byte[]rotatedData=newbyte[data.length];for(inty=0;y<height;y++){for(intx=0;x<width;x++)rotatedData[x*height+height-y-1]=data[x+y*width];}inttmp=width;width=height;height=tmp;data=rotatedData;
byte[]rotatedData=newbyte[data.length];for(inty=0;y<height;y++){for(intx=0;x<width;x++)rotatedData[x*height+height-y-1]=data[x+y*width];}inttmp=width;width=height;height=tmp;data=rotatedData;
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。