第一步: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. android 图片压缩的方法
  2. Android 直接打开log的一种方法
  3. Android在设置里面添加新功能的方法
  4. android studio最新sdk更新方法
  5. Android 调用手机系统照相机拍照
  6. View常见XML属性及相关方法
  7. Android下基于XML的Graphics shape使用方法
  8. android中设置全屏的方法
  9. Android有效解决加载大图片时内存溢出的问题

随机推荐

  1. Android(安卓)JNI编程提高篇之一
  2. android vold学习
  3. 超实用的adb与adb shell常用命令汇总
  4. [置顶] Android(安卓)animation动画
  5. EditText(细节) android:maxLines="1"失
  6. Android(安卓)应用初始化及窗体事件的分
  7. 在Netbeans上配置Android开发环境
  8. Android(安卓)玩转Glide4---Transformati
  9. 用Fiddler抓取Android、Iphone网络数据包
  10. 2019 Android开发趋势及必备技术点!