转自: http://www.cnblogs.com/andgoo/archive/2012/08/29/2661896.html


第一步: AndroidManifest.xml 在Activity添加以下一个属性

android:configChanges= "orientation|keyboardHidden|screenSize"  android:screenOrientation= "sensor" ,为的是能够横竖屏切换不用再次调用onCreate方法,直接调用onConfigurationChanged方法。screenSize是兼容 4.0 系统的才可以生效,否则方法没效。
"@string/app_name"          android:icon= "@drawable/ic_launcher" >         ".MainActivity"                     android:label= "@string/app_name"                    "color: #ff0000;" >android:configChanges= "orientation|keyboardHidden|screenSize"  android:screenOrientation= "sensor"                                 "android.intent.action.MAIN"  />                   "android.intent.category.LAUNCHER"  />                              

第二步,解决竖屏拍照后保存图片会旋转90度的问题。这里我会在onConfigurationChanged方法进行判断当前是横拍还是竖拍,然后在调用相机拍照后,在保存图片的方法里,进行竖拍的照片90度旋转。

     

PictureCallback jpeg = new  PictureCallback() {                       @Override           public  void  onPictureTaken( byte [] data, Camera camera) {               // TODO Auto-generated method stub                Bitmap bMap;              try               { // 获得图片                                                        bMap = BitmapFactory.decodeByteArray(data, 0 , data.length);                                      Bitmap bMapRotate;                   if  (takeType != 0 ) {  //坚拍                      Matrix matrix = new  Matrix();                       matrix.reset();                       matrix.postRotate( 90 );                       bMapRotate = Bitmap.createBitmap(bMap, 0 , 0 , bMap.getWidth(),                               bMap.getHeight(), matrix, true );                      bMap = bMapRotate;                  }                         // Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);               File file = new  File(filePath);               BufferedOutputStream bos =                   new  BufferedOutputStream( new  FileOutputStream(file));               bMap.compress(Bitmap.CompressFormat.JPEG, 100 , bos); //将图片压缩到流中               bos.flush(); //输出               bos.close(); //关闭               } catch (Exception e)                                e.printStackTrace();                                             }; 

  关键代码是以上。

 

 当用竖拍转横拍,还是横拍转竖拍,都要先在surfaceChanged方法,停止预览相机,重新设置下摄像头就不会再出现90度旋转。

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
  5. Android异步加载图像小结 (含线程池,缓存方法)
  6. Android(安卓)UI系列 - 布局 - 目录
  7. Android(安卓)TabHost使用、动态加载内容
  8. Android(安卓)UI开发第十七篇——Android(安卓)Fragment实例(Lis
  9. [Android]在App中使用相机

随机推荐

  1. 基于NDK的Android防破解& Android防破解
  2. 用Eclipse开发Android应用程序(2): 开发
  3. Android中EditText的inputType属性(键盘类
  4. Android学习笔记(一)——src和background区
  5. Android--控件属性汇总
  6. 一篇文章看明白 Android(安卓)v1 & v2 签
  7. Android异步处理四:AsyncTask的实现原理 .
  8. DEMO
  9. android 设置Button或者ImageButton的背
  10. 修改应用程序图标和应用程序标题