- ??
前阵子写了一个拍照的程序,拍完照片图片怎么看都是歪的,找了好久借鉴了很多博客找到了解决的办法,不说了 看代码把
- mOrientationListener?=?new?OrientationEventListener(this){??
- ????????????@Override??
- ????????????public?void?onOrientationChanged(int?orientation)?{??
- ????????????????orientations?=orientation;??
- ????????????????Log.v("time",?"现在是横屏"+orientation);??
- ??????????????????
- ????????????}??
- ????????};??
在oncreate方法中添加OrientationEventListener,OrientationEventListener(方向事件监听器)是一个当方向发生变化时, 从 SensorManager(传感器管理程序)接收通知的辅助类,我就是通过这个来判断手机屏幕的旋转角度,从而将获取后的图片做相应的旋转。
接下来我在onResume中启动事件的监听器
?
- if(mOrientationListener!=null){//先判断下防止出现空指针异常??
- ????????????mOrientationListener.enable();??
- ????????}??
然后就可以在onPictureTaken中将图片旋转相应的角度:
?
- BitmapFactory.Options?opts?=?new?BitmapFactory.Options();??
- ????????????????opts.inPreferredConfig?=?Config.RGB_565;??
- ????????????????opts.inSampleSize?=4;???
- ????????????????Bitmap?bmp?=?BitmapFactory.decodeByteArray(images,?0,?images.length,opts);??
- ????????????????Matrix?matrixs?=?new?Matrix();??
- ????????????????????if(orientations?>?325?||?orientations?<=?45){??
- ????????????????????????Log.v("time",?"Surface.ROTATION_0;"+orientations);??
- ????????????????????????matrixs.setRotate(90);??
- ????????????????????}else?if(orientations?>?45?&&?orientations?<=?135){??
- ????????????????????????Log.v("time",?"?Surface.ROTATION_270"+orientations);??
- ????????????????????matrixs.setRotate(180);??
- ????????????????????}else?if(orientations?>?135?&&?orientations?<?225){??
- ????????????????????????Log.v("time",?"Surface.ROTATION_180;"+orientations);??
- ????????????????????matrixs.setRotate(270);??
- ????????????????????}else?{??
- ????????????????????????Log.v("time",?"Surface.ROTATION_90"+orientations);??
- ????????????????????matrixs.setRotate(0);??
- ????????????????????}??
- ????????????????bmp?=?Bitmap.createBitmap(bmp,?0,?0,?bmp.getWidth(),?bmp.getHeight(),?matrixs,?true);??
?
?
这样图片就旋转过来了,最后别忘了在onPause中将事件监听器关掉:
?
- if(mOrientationListener!=null){??
- ????????????mOrientationListener.disable();??
- ????????}??
ok!这样就完成了。这算是一点小小的收获吧!
?
?

