Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 豎屏拍照旋轉90度

android 豎屏拍照旋轉90度

編輯:關於Android編程

 第一步: 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. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved