android解决坚屏拍照和保存图片旋转90度的问题,并兼容4.0
第一步: AndroidManifest.xml 在Activity添加以下一个属性
android:configChanges= "orientation|keyboardHidden|screenSize" android:screenOrientation= "sensor" ,为的是能够横竖屏切换不用再次调用onCreate方法,直接调用onConfigurationChanged方法。screenSize是兼容 4.0 系统的才可以生效,否则方法没效。 |
<application android:label= "@string/app_name" android:icon= "@drawable/ic_launcher" > <activity android:name= ".MainActivity" android:label= "@string/app_name" android:configChanges= "orientation|keyboardHidden|screenSize" android:screenOrientation= "sensor" > <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:name= "android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> |
第二步,解决竖屏拍照后保存图片会旋转90度的问题。这里我会在onConfigurationChanged方法进行判断当前是横拍还是竖拍,然后在调用相机拍照后,在保存图片的方法里,进行竖拍的照片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; if (takeType != 0 ) { //坚拍 Matrix matrix = new Matrix(); matrix.reset(); matrix.postRotate( 90 ); 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度旋转。
分类:
Android SDK
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探