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);
}
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;
}
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;
}
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;
}
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;
}
Aggregations