系统:android6.0
客户需求:将相机拍出来的照片旋转至某个角度显示
刚开始得到需求后自然而然地在gallery2里寻找问题点,后经点拨知道图库的功能只是为了显示图片,不做存储功能。(废了不少周折)。然后开始查看camera2里的内容,未果。也希望与大神看到此篇文章并且知道在camera2里修改位置的希望能与我分享,在此谢过。
废话少说,在hardware/rockchip/camera/CameraHal/AppMsgNotifier.cpp里面:
//3. src data will be changed by mirror and flip algorithm
//use jpeg buffer as line buffer
rotation = 90;
if(rotation == 0)
{
JpegInInfo.rotateDegree = DEGREE_0;
}
else if(rotation == 180)
{
YuvData_Mirror_Flip(V4L2_PIX_FMT_NV12, (char*)input_vir_addr,
(char*) jpegbuf_vir, jpeg_w, jpeg_h);
mRawBufferProvider->flushBuffer(0);
JpegInInfo.rotateDegree = DEGREE_0;
}
else if(rotation == 90)
{
YuvData_Mirror_Flip(V4L2_PIX_FMT_NV12, (char*)input_vir_addr,
(char*) jpegbuf_vir, jpeg_w, jpeg_h);
mRawBufferProvider->flushBuffer(0);
JpegInInfo.rotateDegree = DEGREE_270;
}
else if(rotation == 270)
{
JpegInInfo.rotateDegree = DEGREE_270;
}
接下来说一下录像旋转问题,这个最初以为也是在Hardware里面改,但是找了一会未果,因为比较急,所以换了个方向,在Camera2里面将他旋转,后经过查找发现如下位置修改:
packages/apps/Camera2/src/com/android/camera/VideoModule.java
initializeRecorder()--->
mMediaRecorder.setOrientationHint(0); //旋转的角度