天天看點

修改framework Camera的API,旋轉攝像頭

修改攝像頭旋轉方向有很多方法,如驅動層,hal層,應用等修改,這裡說一個修改API的方法,如果攝像頭角度不正确,當每個應用調用API時,需要另外設定旋轉。

修改API後,應用不需要更改或根據需要再做調整。

根據Camera的API,Camera的類位置:

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

Camera有個open方法, 當需要更改攝像頭方向時,可以修改open方法。

open方法有兩個,

修改framework Camera的API,旋轉攝像頭

添加一個方法:

根據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方法中調用上述方法

修改framework Camera的API,旋轉攝像頭