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

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

第二步,解决竖屏拍照后保存图片会旋转90度的问题。这里只能够采取曲线救国了,就是把已经拍好的图片用代码旋转90度。

首先判断当前是横拍还是竖拍,然后在调用相机拍照后,在保存图片的方法里,进行竖拍的照片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; Configuration config = getResources().getConfiguration();
if (config.orientation==1)
{ // 坚拍
Matrix matrix = new Matrix();
matrix.reset();
matrix.postRotate(270);
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. ImageView.setScaleType(ImageView.ScaleType)
  2. Android的快速开发框架 afinal
  3. android 状态栏背景修改为透明
  4. Android(安卓)结束进程的方法
  5. 通过JS或PHP检测Android
  6. Android在设置里面添加新功能的方法
  7. android studio最新sdk更新方法
  8. Android(安卓)调用手机系统照相机拍照
  9. Android:WebView与Javascript交互(相互调用参数、传值)

随机推荐

  1. 字体图标的用法 盒模型的演示 box-sizing
  2. CSS_0702作业
  3. 0702 作业请求老师审批
  4. 0708作业 赋值和字面量简化 函数
  5. 字体图标的引用及页面布局盒模型常用属性
  6. vscode 常用插件安装
  7. CSS学习_0705作业
  8. 手机号隐藏中间四位
  9. vue 前端打包 chunk-vendors文件过大的问
  10. vue-cli打包后vendor.js文件太大