Search in sources :

Example 11 with Size

use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.

the class Util method newSurfaceLayer.

public static SurfaceTexture newSurfaceLayer(int mCameraDisplayOrientation, Parameters mParameters, CameraActivity mActivity) {
    CameraScreenNail screenNail = (CameraScreenNail) mActivity.mCameraScreenNail;
    if (mSurfaceTexture == null || mSwitchCamera) {
        mSwitchCamera = false;
        Size size = mParameters.getPreviewSize();
        if (mCameraDisplayOrientation % 180 == 0) {
            screenNail.setSize(size.width, size.height);
        } else {
            screenNail.setSize(size.height, size.width);
        }
        screenNail.enableAspectRatioClamping();
        mActivity.notifyScreenNailChanged();
        screenNail.acquireSurfaceTexture();
        mSurfaceTexture = screenNail.getSurfaceTexture();
    }
    return (SurfaceTexture) mSurfaceTexture;
}
Also used : SurfaceTexture(android.graphics.SurfaceTexture) Size(android.hardware.Camera.Size)

Example 12 with Size

use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.

the class PhotoModule method updateCameraParametersPreference.

private void updateCameraParametersPreference() {
    setAutoExposureLockIfSupported();
    setAutoWhiteBalanceLockIfSupported();
    setFocusAreasIfSupported();
    setMeteringAreasIfSupported();
    // Set picture size.
    String pictureSize = mPreferences.getString(CameraSettings.KEY_PICTURE_SIZE, null);
    if (pictureSize == null) {
        CameraSettings.initialCameraPictureSize(mActivity, mParameters);
    } else {
        Size oldSize = mParameters.getPictureSize();
        List<Size> supported = mParameters.getSupportedPictureSizes();
        CameraSettings.setCameraPictureSize(pictureSize, supported, mParameters);
        Size size = mParameters.getPictureSize();
        if (oldSize != null && size != null) {
            if (!size.equals(oldSize) && mCameraState != PREVIEW_STOPPED) {
                Log.d(TAG, "Picture size changed. Restart preview");
                mAspectRatioChanged = true;
                stopPreview();
            }
        }
    }
    Size size = mParameters.getPictureSize();
    // Set a preview size that is closest to the viewfinder height and has
    // the right aspect ratio.
    List<Size> sizes = mParameters.getSupportedPreviewSizes();
    Size optimalSize = Util.getOptimalPreviewSize(mActivity, sizes, (double) size.width / size.height);
    Size original = mParameters.getPreviewSize();
    if (!original.equals(optimalSize)) {
        mParameters.setPreviewSize(optimalSize.width, optimalSize.height);
        // Zoom related settings will be changed for different preview
        // sizes, so set and read the parameters to get latest values
        mCameraDevice.setParameters(mParameters);
        mParameters = mCameraDevice.getParameters();
    }
    Log.v(TAG, "Preview size is " + optimalSize.width + "x" + optimalSize.height);
    // Since changing scene mode may change supported values, set scene mode
    // first. HDR is a scene mode. To promote it in UI, it is stored in a
    // separate preference.
    String hdr = mPreferences.getString(CameraSettings.KEY_CAMERA_HDR, mActivity.getString(R.string.pref_camera_hdr_default));
    if (mActivity.getString(R.string.setting_on_value).equals(hdr)) {
        if (Util.isCameraHdrSupported(mParameters) && !Util.useSoftwareHDR())
            mSceneMode = Util.SCENE_MODE_HDR;
        else {
            mSceneMode = Parameters.SCENE_MODE_AUTO;
            Util.setDoSoftwareHDRShot(true);
        }
    } else {
        if (Util.useSoftwareHDR()) {
            Util.setDoSoftwareHDRShot(false);
        }
        mSceneMode = mPreferences.getString(CameraSettings.KEY_SCENE_MODE, mActivity.getString(R.string.pref_camera_scenemode_default));
    }
    if (Util.isSupported(mSceneMode, mParameters.getSupportedSceneModes())) {
        if (!mParameters.getSceneMode().equals(mSceneMode)) {
            mParameters.setSceneMode(mSceneMode);
            // Setting scene mode will change the settings of flash mode,
            // white balance, and focus mode. Here we read back the
            // parameters, so we can know those settings.
            mCameraDevice.setParameters(mParameters);
            mParameters = mCameraDevice.getParameters();
        }
    } else {
        mSceneMode = mParameters.getSceneMode();
        if (mSceneMode == null) {
            mSceneMode = Parameters.SCENE_MODE_AUTO;
        }
    }
    if (Util.enableZSL()) {
        if (Util.sendMagicSamsungZSLCommand()) {
            mCameraDevice.sendMagicSamsungZSLCommand();
        }
        // Switch on ZSL mode
        mParameters.set("camera-mode", "1");
    } else {
    //mParameters.setCameraMode(0);
    }
    // Set JPEG quality.
    int jpegQuality = Integer.parseInt(mPreferences.getString(CameraSettings.KEY_JPEG, mActivity.getString(R.string.pref_camera_jpeg_default)));
    mParameters.setJpegQuality(jpegQuality);
    // For the following settings, we need to check if the settings are
    // still supported by latest driver, if not, ignore the settings.
    // Set ISO speed.
    String isoMode = mPreferences.getString(CameraSettings.KEY_ISO_MODE, mActivity.getString(R.string.pref_camera_iso_default));
    if (Util.isSupported(isoMode, mParameters.getSupportedIsoValues()))
        mParameters.setISOValue(isoMode);
    // Color effect
    String colorEffect = mPreferences.getString(CameraSettings.KEY_COLOR_EFFECT, mActivity.getString(R.string.pref_camera_coloreffect_default));
    if (Util.isSupported(colorEffect, mParameters.getSupportedColorEffects())) {
        mParameters.setColorEffect(colorEffect);
    }
    // Set shutter speed
    String shutterSpeed = mPreferences.getString(CameraSettings.KEY_SHUTTER_SPEED, mActivity.getString(R.string.pref_shutter_speed_default));
    mParameters.set("shutter-speed", shutterSpeed);
    // Set exposure compensation
    if (!mHDRShotInProgress) {
        int value = CameraSettings.readExposure(mPreferences);
        int max = mParameters.getMaxExposureCompensation();
        int min = mParameters.getMinExposureCompensation();
        if (value >= min && value <= max) {
            mParameters.setExposureCompensation(value);
        } else {
            Log.w(TAG, "invalid exposure range: " + value);
        }
    }
    if (Parameters.SCENE_MODE_AUTO.equals(mSceneMode)) {
        // Set flash mode.
        String flashMode = mPreferences.getString(CameraSettings.KEY_FLASH_MODE, mActivity.getString(R.string.pref_camera_flashmode_default));
        List<String> supportedFlash = mParameters.getSupportedFlashModes();
        if (Util.isSupported(flashMode, supportedFlash)) {
            mParameters.setFlashMode(flashMode);
        } else {
            flashMode = mParameters.getFlashMode();
            if (flashMode == null) {
                flashMode = mActivity.getString(R.string.pref_camera_flashmode_no_flash);
            }
        }
        // Set white balance parameter.
        String whiteBalance = mPreferences.getString(CameraSettings.KEY_WHITE_BALANCE, mActivity.getString(R.string.pref_camera_whitebalance_default));
        if (Util.isSupported(whiteBalance, mParameters.getSupportedWhiteBalance())) {
            mParameters.setWhiteBalance(whiteBalance);
        } else {
            whiteBalance = mParameters.getWhiteBalance();
            if (whiteBalance == null) {
                whiteBalance = Parameters.WHITE_BALANCE_AUTO;
            }
        }
        // Set focus mode.
        mFocusManager.overrideFocusMode(null);
        mParameters.setFocusMode(mFocusManager.getFocusMode());
        // Set focus time.
        mFocusManager.setFocusTime(Integer.valueOf(mPreferences.getString(CameraSettings.KEY_FOCUS_TIME, mActivity.getString(R.string.pref_camera_focustime_default))));
    } else {
        mFocusManager.overrideFocusMode(mParameters.getFocusMode());
    }
    if (mContinousFocusSupported && ApiHelper.HAS_AUTO_FOCUS_MOVE_CALLBACK) {
        updateAutoFocusMoveCallback();
    }
}
Also used : Size(android.hardware.Camera.Size)

Example 13 with Size

use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.

the class VideoModule method getDesiredPreviewSize.

@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB)
private void getDesiredPreviewSize() {
    mParameters = mActivity.mCameraDevice.getParameters();
    if (ApiHelper.HAS_GET_SUPPORTED_VIDEO_SIZE) {
        if (mParameters.getSupportedVideoSizes() == null || (!mActivity.getResources().getBoolean(R.bool.usePreferredPreviewSizeForEffects) && effectsActive()) || Util.useProfileVideoSize()) {
            mDesiredPreviewWidth = mProfile.videoFrameWidth;
            mDesiredPreviewHeight = mProfile.videoFrameHeight;
        } else {
            // Driver supports separates outputs for preview and video.
            List<Size> sizes = mParameters.getSupportedPreviewSizes();
            Size preferred = mParameters.getPreferredPreviewSizeForVideo();
            if (mActivity.getResources().getBoolean(R.bool.ignorePreferredPreviewSizeForVideo) || preferred == null) {
                preferred = sizes.get(0);
            }
            int product = preferred.width * preferred.height;
            Iterator<Size> it = sizes.iterator();
            // Remove the preview sizes that are not preferred.
            while (it.hasNext()) {
                Size size = it.next();
                if (size.width * size.height > product) {
                    it.remove();
                }
            }
            Size optimalSize = Util.getOptimalPreviewSize(mActivity, sizes, (double) mProfile.videoFrameWidth / mProfile.videoFrameHeight);
            mDesiredPreviewWidth = optimalSize.width;
            mDesiredPreviewHeight = optimalSize.height;
        }
    } else {
        mDesiredPreviewWidth = mProfile.videoFrameWidth;
        mDesiredPreviewHeight = mProfile.videoFrameHeight;
    }
    Log.v(TAG, "mDesiredPreviewWidth=" + mDesiredPreviewWidth + ". mDesiredPreviewHeight=" + mDesiredPreviewHeight);
}
Also used : Size(android.hardware.Camera.Size) TargetApi(android.annotation.TargetApi)

Example 14 with Size

use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.

the class VideoModule method checkQualityAndStartPreview.

// Verifies that the current preview view size is correct before starting
// preview. If not, resets the surface texture and resizes the view.
private void checkQualityAndStartPreview() {
    readVideoPreferences();
    showTimeLapseUI(mCaptureTimeLapse);
    Size size = mParameters.getPreviewSize();
    if (size.width != mDesiredPreviewWidth || size.height != mDesiredPreviewHeight) {
        resizeForPreviewAspectRatio();
    }
    // Start up preview again
    startPreview();
}
Also used : Size(android.hardware.Camera.Size)

Example 15 with Size

use of android.hardware.Camera.Size in project android_packages_apps_Camera by CyanogenMod.

the class VideoModule method setCameraParameters.

@SuppressWarnings("deprecation")
private void setCameraParameters() {
    mParameters.setPreviewSize(mDesiredPreviewWidth, mDesiredPreviewHeight);
    mParameters.setPreviewFrameRate(mProfile.videoFrameRate);
    // Set video mode
    CameraSettings.setVideoMode(mParameters, true);
    // Set video size before recording starts
    CameraSettings.setEarlyVideoSize(mParameters, mProfile);
    // Set flash mode.
    String flashMode;
    if (mActivity.mShowCameraAppView) {
        flashMode = mPreferences.getString(CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE, mActivity.getString(R.string.pref_camera_video_flashmode_default));
    } else {
        flashMode = Parameters.FLASH_MODE_OFF;
    }
    List<String> supportedFlash = mParameters.getSupportedFlashModes();
    if (isSupported(flashMode, supportedFlash)) {
        mParameters.setFlashMode(flashMode);
    } else {
        flashMode = mParameters.getFlashMode();
        if (flashMode == null) {
            flashMode = mActivity.getString(R.string.pref_camera_flashmode_no_flash);
        }
    }
    // Set white balance parameter.
    String whiteBalance = mPreferences.getString(CameraSettings.KEY_WHITE_BALANCE, mActivity.getString(R.string.pref_camera_whitebalance_default));
    if (isSupported(whiteBalance, mParameters.getSupportedWhiteBalance())) {
        mParameters.setWhiteBalance(whiteBalance);
    } else {
        whiteBalance = mParameters.getWhiteBalance();
        if (whiteBalance == null) {
            whiteBalance = Parameters.WHITE_BALANCE_AUTO;
        }
    }
    // Set zoom.
    if (mParameters.isZoomSupported()) {
        mParameters.setZoom(mZoomValue);
    }
    // Set continuous autofocus.
    List<String> supportedFocus = mParameters.getSupportedFocusModes();
    if (isSupported(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO, supportedFocus)) {
        mParameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
    }
    mParameters.set(Util.RECORDING_HINT, Util.TRUE);
    // Enable video stabilization. Convenience methods not available in API
    // level <= 14
    String vstabSupported = mParameters.get("video-stabilization-supported");
    if ("true".equals(vstabSupported)) {
        mParameters.set("video-stabilization", "true");
    }
    // Set picture size.
    // The logic here is different from the logic in still-mode camera.
    // There we determine the preview size based on the picture size, but
    // here we determine the picture size based on the preview size.
    List<Size> supported = mParameters.getSupportedPictureSizes();
    Size optimalSize = Util.getOptimalVideoSnapshotPictureSize(supported, (double) mDesiredPreviewWidth / mDesiredPreviewHeight);
    Size original = mParameters.getPictureSize();
    if (!original.equals(optimalSize)) {
        mParameters.setPictureSize(optimalSize.width, optimalSize.height);
    }
    Log.v(TAG, "Video snapshot size is " + optimalSize.width + "x" + optimalSize.height);
    // Set JPEG quality.
    int jpegQuality = Integer.parseInt(mPreferences.getString(CameraSettings.KEY_VIDEOCAMERA_JPEG, mActivity.getString(R.string.pref_camera_jpeg_default)));
    mParameters.setJpegQuality(jpegQuality);
    // Color effect
    String colorEffect = mPreferences.getString(CameraSettings.KEY_VIDEOCAMERA_COLOR_EFFECT, mActivity.getString(R.string.pref_camera_coloreffect_default));
    if (Util.isSupported(colorEffect, mParameters.getSupportedColorEffects())) {
        mParameters.setColorEffect(colorEffect);
    }
    // Set exposure compensation
    int value = CameraSettings.readExposure(mPreferences);
    int max = mParameters.getMaxExposureCompensation();
    int min = mParameters.getMinExposureCompensation();
    if (value >= min && value <= max) {
        mParameters.setExposureCompensation(value);
    } else {
        Log.w(TAG, "invalid exposure range: " + value);
    }
    // HDR
    if (Util.isVideoHdrSupported(mParameters)) {
        String videohdr = mPreferences.getString(CameraSettings.KEY_VIDEO_HDR, mActivity.getString(R.string.pref_video_hdr_default));
        mParameters.set(mActivity.getString(R.string.videoHdrParam), videohdr);
    }
    CameraSettings.dumpParameters(mParameters);
    mActivity.mCameraDevice.setParameters(mParameters);
    // Keep preview size up to date.
    mParameters = mActivity.mCameraDevice.getParameters();
    updateCameraScreenNailSize(mDesiredPreviewWidth, mDesiredPreviewHeight);
}
Also used : Size(android.hardware.Camera.Size)

Aggregations

Size (android.hardware.Camera.Size)30 Parameters (android.hardware.Camera.Parameters)4 Point (android.graphics.Point)3 Camera (android.hardware.Camera)3 Uri (android.net.Uri)2 IOException (java.io.IOException)2 TargetApi (android.annotation.TargetApi)1 SharedPreferences (android.content.SharedPreferences)1 Editor (android.content.SharedPreferences.Editor)1 SurfaceTexture (android.graphics.SurfaceTexture)1 Location (android.location.Location)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 Message (android.os.Message)1 Nullable (android.support.annotation.Nullable)1 BinaryBitmap (com.google.zxing.BinaryBitmap)1 PlanarYUVLuminanceSource (com.google.zxing.PlanarYUVLuminanceSource)1 ReaderException (com.google.zxing.ReaderException)1 Result (com.google.zxing.Result)1 HybridBinarizer (com.google.zxing.common.HybridBinarizer)1