【Android系统源码修改】修改framework Camera的API,旋转摄像头

修改摄像头旋转方向有很多方法,如驱动层,hal层,应用等修改,这里说一个修改API的方法,如果摄像头角度不正确,当每个应用调用API时,需要另外设置旋转。
修改API后,应用不需要更改或根据需要再做调整。
根据Camera的API,Camera的类位置:

frameworks/base/core/java/android/hardware/Camera.java

Camera有个open方法, 当需要更改摄像头方向时,可以修改open方法。
open方法有两个,
【Android系统源码修改】修改framework Camera的API,旋转摄像头_第1张图片
添加一个方法:
根据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方法中调用上述方法
【Android系统源码修改】修改framework Camera的API,旋转摄像头_第2张图片

你可能感兴趣的:(Android系统源码修改)