android 前摄镜像的源码修改
来源:互联网 发布:数据挖掘可以做什么 编辑:程序博客网 时间:2024/06/06 13:56
最近遇到一个客户需求,要求在前摄的时候,不要求镜像预览,拍出来的照片也不要求镜像。
科谱一下,前摄镜像的原因是让镜头对着自己,当镜子使用,是专门这么设计的。
既然客户有要求,那就得修改了。
通过各种渠道找,之前想通过驱动层修改代码, 但是驱动同事告诉我,预览可以修改,拍出来的照片修改不了。
拍出来 的照片只能是在应用层修改,那就只能在AP侧找源码。
此代码是基于高通的基础之上的,android 7.1平台。
packages\apps\SnapdragonCamera\src\com\android\camera\PhotoModule.java
private void setFlipValue() { // Read Flip mode from adb command //value: 0(default) - FLIP_MODE_OFF //value: 1 - FLIP_MODE_H //value: 2 - FLIP_MODE_V //value: 3 - FLIP_MODE_VH int preview_flip_value = SystemProperties.getInt("debug.camera.preview.flip", 0); int video_flip_value = SystemProperties.getInt("debug.camera.video.flip", 0); int picture_flip_value = SystemProperties.getInt("debug.camera.picture.flip", 0); int rotation = CameraUtil.getJpegRotation(mCameraId, mOrientation); mParameters.setRotation(rotation); if (rotation == 90 || rotation == 270) { // in case of 90 or 270 degree, V/H flip should reverse if (preview_flip_value == 1) { preview_flip_value = 2; } else if (preview_flip_value == 2) { preview_flip_value = 1; } if (video_flip_value == 1) { video_flip_value = 2; } else if (video_flip_value == 2) { video_flip_value = 1; } if (picture_flip_value == 1) { picture_flip_value = 2; } else if (picture_flip_value == 2) { picture_flip_value = 1; } } String preview_flip = CameraUtil.getFilpModeString(preview_flip_value); String video_flip = CameraUtil.getFilpModeString(video_flip_value); String picture_flip = CameraUtil.getFilpModeString(picture_flip_value); if(CameraUtil.isSupported(preview_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_PREVIEW_FLIP, preview_flip); } if(CameraUtil.isSupported(video_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_VIDEO_FLIP, video_flip); } if(CameraUtil.isSupported(picture_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_SNAPSHOT_PICTURE_FLIP, picture_flip); } }
找到这个函数,
添加log,
private void setFlipValue() { // Read Flip mode from adb command //value: 0(default) - FLIP_MODE_OFF //value: 1 - FLIP_MODE_H //value: 2 - FLIP_MODE_V //value: 3 - FLIP_MODE_VH int preview_flip_value = SystemProperties.getInt("debug.camera.preview.flip", 0); int video_flip_value = SystemProperties.getInt("debug.camera.video.flip", 0); int picture_flip_value = SystemProperties.getInt("debug.camera.picture.flip", 0); int rotation = CameraUtil.getJpegRotation(mCameraId, mOrientation);Log.d("leo","preview_flip_value-->"+preview_flip_value);Log.d("leo","video_flip_value-->"+video_flip_value);Log.d("leo","picture_flip_value-->"+picture_flip_value);Log.d("leo","rotation-->"+rotation);Log.d("leo","mCameraId-->"+mCameraId);Log.d("leo","mOrientation-->"+mOrientation); mParameters.setRotation(rotation); if (rotation == 90 || rotation == 270) { // in case of 90 or 270 degree, V/H flip should reverse if (preview_flip_value == 1) { preview_flip_value = 2; } else if (preview_flip_value == 2) { preview_flip_value = 1; } if (video_flip_value == 1) { video_flip_value = 2; } else if (video_flip_value == 2) { video_flip_value = 1; } if (picture_flip_value == 1) { picture_flip_value = 2; } else if (picture_flip_value == 2) { picture_flip_value = 1; } } String preview_flip = CameraUtil.getFilpModeString(preview_flip_value); String video_flip = CameraUtil.getFilpModeString(video_flip_value); String picture_flip = CameraUtil.getFilpModeString(picture_flip_value);Log.d("leo","preview_flip-->"+preview_flip);Log.d("leo","video_flip-->"+video_flip);Log.d("leo","picture_flip-->"+picture_flip); if(CameraUtil.isSupported(preview_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_PREVIEW_FLIP, preview_flip); } if(CameraUtil.isSupported(video_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_VIDEO_FLIP, video_flip); } if(CameraUtil.isSupported(picture_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_SNAPSHOT_PICTURE_FLIP, picture_flip); } }在代码的这个地方,
mParameters.set设置相机的属性时,会有一个flip属性,这个属性就可以设置拍出来的照片是否镜像,v方向还是h方向镜像。
如果需要修改,可以参考以下:
private void setFlipValue() { // Read Flip mode from adb command //value: 0(default) - FLIP_MODE_OFF //value: 1 - FLIP_MODE_H //value: 2 - FLIP_MODE_V //value: 3 - FLIP_MODE_VH int preview_flip_value = SystemProperties.getInt("debug.camera.preview.flip", 0); int video_flip_value = SystemProperties.getInt("debug.camera.video.flip", 0); int picture_flip_value = SystemProperties.getInt("debug.camera.picture.flip", 0); int rotation = CameraUtil.getJpegRotation(mCameraId, mOrientation);Log.d("leo","preview_flip_value-->"+preview_flip_value);Log.d("leo","video_flip_value-->"+video_flip_value);Log.d("leo","picture_flip_value-->"+picture_flip_value);Log.d("leo","rotation-->"+rotation);Log.d("leo","mCameraId-->"+mCameraId);Log.d("leo","mOrientation-->"+mOrientation); // 在这个地方添加对cameraiId的判断,也就是你想镜像哪一个camera,就判断一个id就可以了, // 对filp的修改也是根据你的需要来修改的,我这里只需要修改拍照后的镜像,那就修改picture_flip_value if(2 == mCameraId){picture_flip_value = 2;} mParameters.setRotation(rotation); if (rotation == 90 || rotation == 270) { // in case of 90 or 270 degree, V/H flip should reverse if (preview_flip_value == 1) { preview_flip_value = 2; } else if (preview_flip_value == 2) { preview_flip_value = 1; } if (video_flip_value == 1) { video_flip_value = 2; } else if (video_flip_value == 2) { video_flip_value = 1; } if (picture_flip_value == 1) { picture_flip_value = 2; } else if (picture_flip_value == 2) { picture_flip_value = 1; } } String preview_flip = CameraUtil.getFilpModeString(preview_flip_value); String video_flip = CameraUtil.getFilpModeString(video_flip_value); String picture_flip = CameraUtil.getFilpModeString(picture_flip_value);Log.d("leo","preview_flip-->"+preview_flip);Log.d("leo","video_flip-->"+video_flip);Log.d("leo","picture_flip-->"+picture_flip); if(CameraUtil.isSupported(preview_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_PREVIEW_FLIP, preview_flip); } if(CameraUtil.isSupported(video_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_VIDEO_FLIP, video_flip); } if(CameraUtil.isSupported(picture_flip, CameraSettings.getSupportedFlipMode(mParameters))){ mParameters.set(CameraSettings.KEY_QC_SNAPSHOT_PICTURE_FLIP, picture_flip); } }亲测有效哦,实际拍出来的效果我就不上图了,请gongchengshi们自己动手试试吧。
阅读全文
1 0
- android 前摄镜像的源码修改
- 能否修改android supportv4包的源码?
- android源码修改过程
- android 源码修改记录
- Android对apk源码的修改--反编译+源码修改+重新打包+签名【附HelloWorld的修改实例】
- Android对apk源码的修改--反编译+源码修改+重新打包+签名【附HelloWorld的修改实例】
- Android对apk源码的修改--反编译+源码修改+重新打包+签名【附HelloWorld的修改实例】
- 修改android studio导入的第三方gradle的源码
- android用html5源放视修改源码的思路
- Android源码修改后的语音录音代码
- Android中修改源码实现AutoCompeteTextView控件的模糊匹配
- Android中修改源码实现AutoCompeteTextView控件的模糊匹配
- 关于在ubuntu中修改Android源码的一些细节
- Android中修改源码实现AutoCompeteTextView控件的模糊匹配
- Android 源码中修改某些文件的时间戳方法
- Android源码中关机充电UI的修改
- android源码修改内核配置不生效的解决办法
- 源码中修改Android的开机画面和动画
- 一个因中断导致的死锁分析
- TCP协议疑难杂症全景解析
- JDBC复习总结
- 使用Go和Let's Encrypt证书部署HTTPS
- 查看自己读取得到的数据
- android 前摄镜像的源码修改
- Excell的.xls和.xlsx的导出
- 耦合 聚合 可扩展性
- SPRING MVC3.2案例讲解--SPRING MVC3的@ResponseBody和ResponseEntity
- bug
- 【BZOJ4869】相逢是问候(线段树+欧拉定理)
- 人车物跟踪在另外的机器上跑不起来
- Gitlab问题库中issues的导出问题
- AndroidUI 卡片式折叠交互效果——CardStackView