当前位置:操作系统 > 安卓/Android >>

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(); 
            } 
               
        } 
    }; 
  关键代码是以上。
 
 
 
 当用竖拍转横拍,还是横拍转竖拍,都要先在su易做图ceChanged方法,停止预览相机,重新设置下摄像头就不会再出现90度旋转。
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,