修改framework Camera的API,旋转摄像头

修改摄像头旋转方向有很多方法,如驱动层,hal层,应用等修改,这里说一个修改API的方法,如果摄像头角度不正确,当每个应用调用API时,需要另外设置旋转。
修改API后,应用不需要更改或根据需要再做调整。
根据Camera的API,Camera的类位置:
frameworks/base/core/java/android/hardware/Camera.java
Camera有个open方法, 当需要更改摄像头方向时,可以修改open方法。
open方法有两个,
在这里插入图片描述
添加一个方法:
根据cameraId,返回已经设置好旋转参数的Camera对象。有两个摄像头时,cameraId=0是后摄像头,cameraId=1是前摄像头。

private static Camera rotateCamera(int cameraId) {
        Camera camera = new Camera(cameraId);
        Parameters parameters = camera.getParameters();
        CameraInfo cameraInfo = new CameraInfo();
        getCameraInfo(cameraId, cameraInfo);
        if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
            camera.setDisplayOrientation(270);
            parameters.setRotation(270); 
        } else if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
            camera.setDisplayOrientation(90);
            parameters.setRotation(90); 
        }
        camera.setParameters(parameters);
        return camera;
    }

然后在open方法中调用上述方法

在这里插入图片描述

发布了15 篇原创文章 · 获赞 58 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/shijun931011/article/details/104318020