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

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

第二步,解决竖屏拍照后保存图片会旋转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. JS判断Android、iOS或浏览器的多种方法(四种方法)
  2. android:定制checkbox 图片
  3. Android View onMeasure 方法
  4. android图片缩放手势检测类--ScaleGestureDetector
  5. Android Studio 3.0以后打包修改文件名方法
  6. 【Android】android开发过程遇到的问题以及解决方法总结
  7. android图片压缩方法

随机推荐

  1. LinearGradient
  2. Building Android(安卓)FW for my Dream
  3. android图片异步加载到本地
  4. Android(安卓)String.xml Html格式化方法
  5. CirleDrawImage圆角图片
  6. android反射获取资源
  7. 安卓绘制五角星
  8. android new socket异常
  9. android mask setXfermode
  10. bitmap 压缩 compress