首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 竖屏照相旋转90度

2013-01-17 
android 竖屏拍照旋转90度 第一步: AndroidManifest.xml 在Activity添加以下一个属性?spanandroid:confi

android 竖屏拍照旋转90度

 第一步: 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度旋转。

热点排行
Bad Request.