Search in sources :

Example 1 with Size

use of com.yydcdut.note.utils.camera.param.Size in project PhotoNoter by yydcdut.

the class CameraModelImpl method openCamera.

@Override
public void openCamera(String id, OnCameraOpenedCallback callback, int orientation, Size pictureSize) {
    if (mCameraState != STATE_CAMERA_CLOSE) {
        return;
    }
    if (callback == null) {
        throw new IllegalArgumentException("");
    }
    if (mCameraState == STATE_CAMERA_CLOSE && mCamera == null) {
        int cameraId = 0;
        try {
            cameraId = Integer.parseInt(id);
        } catch (Exception e) {
            //String转int失败,id不是数字
            YLog.e(e);
        }
        mCamera = Camera.open(cameraId);
        mCamera.setDisplayOrientation(orientation);
        mCameraState = STATE_CAMERA_OPEN;
        mPreviewModel = new PreviewModel();
    } else {
        printLog("openCamera");
    }
    mCameraSettingModel = new CameraSettingModel(mCamera);
    if (pictureSize == null) {
        List<Size> list = mCameraSettingModel.getSupportPictureSizes();
        Collections.sort(list, new Comparator<Size>() {

            @Override
            public int compare(Size lhs, Size rhs) {
                return -(rhs.getWidth() * rhs.getHeight() - lhs.getWidth() * lhs.getHeight());
            }
        });
        pictureSize = list.get(list.size() - 1);
    }
    mCameraSettingModel.setPictureSize(pictureSize.getWidth(), pictureSize.getHeight());
    callback.onOpen(mPreviewModel, mCameraSettingModel);
}
Also used : IPreviewModel(com.yydcdut.note.model.camera.IPreviewModel) Size(com.yydcdut.note.utils.camera.param.Size) IOException(java.io.IOException)

Example 2 with Size

use of com.yydcdut.note.utils.camera.param.Size in project PhotoNoter by yydcdut.

the class Camera2ModelImpl method getYuvSize.

private Size getYuvSize(Size previewSize) {
    List<Size> sizeList = mCamera2SettingModel.getSupportYUV420888Sizes();
    Size returnSize = null;
    for (Size size : sizeList) {
        if (size.equals(previewSize)) {
            returnSize = previewSize;
            break;
        }
    }
    if (returnSize == null) {
        for (Size size : sizeList) {
            if (size.getWidth() == previewSize.getWidth()) {
                returnSize = previewSize;
                break;
            }
            if (size.getHeight() == previewSize.getHeight()) {
                returnSize = previewSize;
                break;
            }
        }
    }
    if (returnSize == null) {
        returnSize = sizeList.get(sizeList.size() / 2);
    }
    return returnSize;
}
Also used : Size(com.yydcdut.note.utils.camera.param.Size)

Example 3 with Size

use of com.yydcdut.note.utils.camera.param.Size in project PhotoNoter by yydcdut.

the class CameraPresenterImpl method savePictureSizes.

/**
     * 保存照片尺寸到SharedPreference
     *
     * @param currentCameraId
     */
private Size savePictureSizes(String currentCameraId) {
    Size size = null;
    try {
        List<Size> list = mCameraSettingModel.getSupportPictureSizes();
        Collections.sort(list, new SizeComparator());
        size = list.get(list.size() - 1);
        mLocalStorageUtils.setPictureSizes(currentCameraId, list);
        mLocalStorageUtils.setPictureSize(currentCameraId, size);
    } catch (JSONException e) {
        YLog.e(e);
    } catch (NullPointerException e) {
        //mCameraSettingModel有可能为空
        YLog.e(e);
    }
    return size;
}
Also used : SizeComparator(com.yydcdut.note.model.compare.SizeComparator) Size(com.yydcdut.note.utils.camera.param.Size) JSONException(org.json.JSONException)

Example 4 with Size

use of com.yydcdut.note.utils.camera.param.Size in project PhotoNoter by yydcdut.

the class CameraPresenterImpl method getSuitablePreviewSize.

/**
     * 获得最佳预览尺寸
     *
     * @param previewList
     * @return
     */
private Size getSuitablePreviewSize(List<Size> previewList) {
    Size previewSize = null;
    Collections.sort(previewList, new SizeComparator());
    float screenScale = Utils.sScreenHeight / (float) Utils.sScreenWidth;
    for (Size preSize : previewList) {
        if (preSize.getWidth() * preSize.getHeight() > 1200000) {
            continue;
        }
        float preScale = preSize.getWidth() / (float) preSize.getHeight();
        //full ratio 如果全屏也是4:3的话,就先这样吧
        if (Math.abs(preScale - screenScale) < 0.03) {
            mFullSize = preSize;
        }
        //4:3 默认进来4:3
        if (preScale < 1.36f && preScale > 1.30f) {
            m43Size = preSize;
        }
        if (mRatioState == Const.LAYOUT_PERSONAL_RATIO_1_1) {
            previewSize = m43Size;
        } else if (mRatioState == Const.LAYOUT_PERSONAL_RATIO_FULL) {
            previewSize = mFullSize;
        } else {
            previewSize = m43Size;
        }
    }
    if (mFullSize == null) {
        mFullSize = previewList.get(previewList.size() / 2);
    }
    if (m43Size == null) {
        m43Size = previewList.get(previewList.size() / 2);
    }
    if (previewSize == null) {
        previewSize = previewList.get(0);
    }
    return previewSize;
}
Also used : SizeComparator(com.yydcdut.note.model.compare.SizeComparator) Size(com.yydcdut.note.utils.camera.param.Size)

Example 5 with Size

use of com.yydcdut.note.utils.camera.param.Size in project PhotoNoter by yydcdut.

the class SettingPresenterImpl method getPictureSizeJsonArray.

/**
     * 将List的数据存为JsonArray
     *
     * @param cameraId
     * @return
     * @throws JSONException
     */
private List<Size> getPictureSizeJsonArray(int cameraId) throws JSONException {
    Camera camera = Camera.open(cameraId);
    Camera.Parameters parameters = camera.getParameters();
    List<Camera.Size> cameraSizeList = parameters.getSupportedPictureSizes();
    camera.release();
    List<Size> sizeList = new ArrayList<>();
    for (Camera.Size size : cameraSizeList) {
        sizeList.add(Size.parseSize(size));
    }
    return sizeList;
}
Also used : Size(com.yydcdut.note.utils.camera.param.Size) ArrayList(java.util.ArrayList) Camera(android.hardware.Camera)

Aggregations

Size (com.yydcdut.note.utils.camera.param.Size)17 ArrayList (java.util.ArrayList)5 JSONException (org.json.JSONException)5 SizeComparator (com.yydcdut.note.model.compare.SizeComparator)4 StreamConfigurationMap (android.hardware.camera2.params.StreamConfigurationMap)3 JSONObject (org.json.JSONObject)3 IPreviewModel (com.yydcdut.note.model.camera.IPreviewModel)2 JSONArray (org.json.JSONArray)2 SharedPreferences (android.content.SharedPreferences)1 Camera (android.hardware.Camera)1 ICameraFocus (com.yydcdut.note.model.camera.ICameraFocus)1 ICameraModel (com.yydcdut.note.model.camera.ICameraModel)1 ICameraSettingModel (com.yydcdut.note.model.camera.ICameraSettingModel)1 ICaptureModel (com.yydcdut.note.model.camera.ICaptureModel)1 IOException (java.io.IOException)1