Java Code Examples for android.hardware.Camera.Parameters#setPreviewFormat()

The following examples show how to use android.hardware.Camera.Parameters#setPreviewFormat() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: VideoStream.java    From spydroid-ipcamera with GNU General Public License v3.0 6 votes vote down vote up
protected synchronized void updateCamera() throws RuntimeException {
	if (mPreviewStarted) {
		mPreviewStarted = false;
		mCamera.stopPreview();
	}

	Parameters parameters = mCamera.getParameters();
	mQuality = VideoQuality.determineClosestSupportedResolution(parameters, mQuality);
	int[] max = VideoQuality.determineMaximumSupportedFramerate(parameters);
	parameters.setPreviewFormat(mCameraImageFormat);
	parameters.setPreviewSize(mQuality.resX, mQuality.resY);
	parameters.setPreviewFpsRange(max[0], max[1]);

	try {
		mCamera.setParameters(parameters);
		mCamera.setDisplayOrientation(mOrientation);
		mCamera.startPreview();
		mPreviewStarted = true;
	} catch (RuntimeException e) {
		destroyCamera();
		throw e;
	}
}
 
Example 2
Source File: CameraWrapper.java    From VideoCamera with Apache License 2.0 5 votes vote down vote up
public void configureForPreview(int viewWidth, int viewHeight) {
    final Parameters params = mNativeCamera.getNativeCameraParameters();
    final CameraSize previewSize = getOptimalSize(params.getSupportedPreviewSizes(), viewWidth, viewHeight);

    params.setPreviewSize(previewSize.getWidth(), previewSize.getHeight());
    params.setPreviewFormat(ImageFormat.NV21);
    mNativeCamera.updateNativeCameraParameters(params);
    mNativeCamera.setDisplayOrientation(getRotationCorrection());
    CLog.d(CLog.CAMERA, "Preview size: " + previewSize.getWidth() + "x" + previewSize.getHeight());
}
 
Example 3
Source File: CameraWrapper.java    From LandscapeVideoCamera with Apache License 2.0 5 votes vote down vote up
public void configureForPreview(int viewWidth, int viewHeight) {
    final Parameters params = mNativeCamera.getNativeCameraParameters();
    final CameraSize previewSize = getOptimalSize(params.getSupportedPreviewSizes(), viewWidth, viewHeight);

    params.setPreviewSize(previewSize.getWidth(), previewSize.getHeight());
    params.setPreviewFormat(ImageFormat.NV21);
    mNativeCamera.updateNativeCameraParameters(params);
    mNativeCamera.setDisplayOrientation(getRotationCorrection());
    CLog.d(CLog.CAMERA, "Preview size: " + previewSize.getWidth() + "x" + previewSize.getHeight());
}
 
Example 4
Source File: VideoStream.java    From libstreaming with Apache License 2.0 5 votes vote down vote up
protected synchronized void updateCamera() throws RuntimeException {
	
	// The camera is already correctly configured
	if (mUpdated) return;
	
	if (mPreviewStarted) {
		mPreviewStarted = false;
		mCamera.stopPreview();
	}

	Parameters parameters = mCamera.getParameters();
	mQuality = VideoQuality.determineClosestSupportedResolution(parameters, mQuality);
	int[] max = VideoQuality.determineMaximumSupportedFramerate(parameters);
	
	double ratio = (double)mQuality.resX/(double)mQuality.resY;
	mSurfaceView.requestAspectRatio(ratio);
	
	parameters.setPreviewFormat(mCameraImageFormat);
	parameters.setPreviewSize(mQuality.resX, mQuality.resY);
	parameters.setPreviewFpsRange(max[0], max[1]);

	try {
		mCamera.setParameters(parameters);
		mCamera.setDisplayOrientation(mOrientation);
		mCamera.startPreview();
		mPreviewStarted = true;
		mUpdated = true;
	} catch (RuntimeException e) {
		destroyCamera();
		throw e;
	}
}
 
Example 5
Source File: AndroidCameraAgentImpl.java    From Camera2 with Apache License 2.0 4 votes vote down vote up
private void applySettingsToParameters(final CameraSettings settings,
        final Parameters parameters) {
    final CameraCapabilities.Stringifier stringifier = mCapabilities.getStringifier();
    Size photoSize = settings.getCurrentPhotoSize();
    parameters.setPictureSize(photoSize.width(), photoSize.height());
    Size previewSize = settings.getCurrentPreviewSize();
    parameters.setPreviewSize(previewSize.width(), previewSize.height());
    if (settings.getPreviewFrameRate() == -1) {
        parameters.setPreviewFpsRange(settings.getPreviewFpsRangeMin(),
                settings.getPreviewFpsRangeMax());
    } else {
        parameters.setPreviewFrameRate(settings.getPreviewFrameRate());
    }
    parameters.setPreviewFormat(settings.getCurrentPreviewFormat());
    parameters.setJpegQuality(settings.getPhotoJpegCompressionQuality());
    if (mCapabilities.supports(CameraCapabilities.Feature.ZOOM)) {
        parameters.setZoom(zoomRatioToIndex(settings.getCurrentZoomRatio(),
                parameters.getZoomRatios()));
    }
    parameters.setExposureCompensation(settings.getExposureCompensationIndex());
    if (mCapabilities.supports(CameraCapabilities.Feature.AUTO_EXPOSURE_LOCK)) {
        parameters.setAutoExposureLock(settings.isAutoExposureLocked());
    }
    parameters.setFocusMode(stringifier.stringify(settings.getCurrentFocusMode()));
    if (mCapabilities.supports(CameraCapabilities.Feature.AUTO_WHITE_BALANCE_LOCK)) {
        parameters.setAutoWhiteBalanceLock(settings.isAutoWhiteBalanceLocked());
    }
    if (settings.getWhiteBalance() != null) {
        parameters.setWhiteBalance(stringifier.stringify(settings.getWhiteBalance()));
    }
    if (mCapabilities.supports(CameraCapabilities.Feature.FOCUS_AREA)) {
        if (settings.getFocusAreas().size() != 0) {
            parameters.setFocusAreas(settings.getFocusAreas());
        } else {
            parameters.setFocusAreas(null);
        }
    }
    if (mCapabilities.supports(CameraCapabilities.Feature.METERING_AREA)) {
        if (settings.getMeteringAreas().size() != 0) {
            parameters.setMeteringAreas(settings.getMeteringAreas());
        } else {
            parameters.setMeteringAreas(null);
        }
    }
    if (settings.getCurrentFlashMode() != CameraCapabilities.FlashMode.NO_FLASH) {
        parameters.setFlashMode(stringifier.stringify(settings.getCurrentFlashMode()));
    }
    if (settings.getCurrentSceneMode() != CameraCapabilities.SceneMode.NO_SCENE_MODE) {
        if (settings.getCurrentSceneMode() != null) {
            parameters
                    .setSceneMode(stringifier.stringify(settings.getCurrentSceneMode()));
        }
    }
    parameters.setRecordingHint(settings.isRecordingHintEnabled());
    Size jpegThumbSize = settings.getExifThumbnailSize();
    if (jpegThumbSize != null) {
        parameters.setJpegThumbnailSize(jpegThumbSize.width(), jpegThumbSize.height());
    }
    parameters.setPictureFormat(settings.getCurrentPhotoFormat());

    CameraSettings.GpsData gpsData = settings.getGpsData();
    if (gpsData == null) {
        parameters.removeGpsData();
    } else {
        parameters.setGpsTimestamp(gpsData.timeStamp);
        if (gpsData.processingMethod != null) {
            // It's a hack since we always use GPS time stamp but does
            // not use other fields sometimes. Setting processing
            // method to null means the other fields should not be used.
            parameters.setGpsAltitude(gpsData.altitude);
            parameters.setGpsLatitude(gpsData.latitude);
            parameters.setGpsLongitude(gpsData.longitude);
            parameters.setGpsProcessingMethod(gpsData.processingMethod);
        }
    }

}
 
Example 6
Source File: CodeScanner.java    From code-scanner with MIT License 4 votes vote down vote up
private void initialize() {
    Camera camera = null;
    final CameraInfo cameraInfo = new CameraInfo();
    final int cameraId = mCameraId;
    if (cameraId == CAMERA_BACK || cameraId == CAMERA_FRONT) {
        final int numberOfCameras = Camera.getNumberOfCameras();
        final int facing = cameraId == CAMERA_BACK ? CameraInfo.CAMERA_FACING_BACK :
                CameraInfo.CAMERA_FACING_FRONT;
        for (int i = 0; i < numberOfCameras; i++) {
            Camera.getCameraInfo(i, cameraInfo);
            if (cameraInfo.facing == facing) {
                camera = Camera.open(i);
                mCameraId = i;
                break;
            }
        }
    } else {
        camera = Camera.open(cameraId);
        Camera.getCameraInfo(cameraId, cameraInfo);
    }
    if (camera == null) {
        throw new CodeScannerException("Unable to access camera");
    }
    final Parameters parameters = camera.getParameters();
    if (parameters == null) {
        throw new CodeScannerException("Unable to configure camera");
    }
    final int orientation = Utils.getDisplayOrientation(mContext, cameraInfo);
    final boolean portrait = Utils.isPortrait(orientation);
    final Point imageSize =
            Utils.findSuitableImageSize(parameters, portrait ? mHeight : mWidth,
                    portrait ? mWidth : mHeight);
    final int imageWidth = imageSize.getX();
    final int imageHeight = imageSize.getY();
    parameters.setPreviewSize(imageWidth, imageHeight);
    parameters.setPreviewFormat(ImageFormat.NV21);
    final Point previewSize = Utils.getPreviewSize(portrait ? imageHeight : imageWidth,
            portrait ? imageWidth : imageHeight, mWidth, mHeight);
    final List<String> focusModes = parameters.getSupportedFocusModes();
    final boolean autoFocusSupported = focusModes != null &&
            (focusModes.contains(Parameters.FOCUS_MODE_AUTO) ||
                    focusModes.contains(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE));
    if (!autoFocusSupported) {
        mAutoFocusEnabled = false;
    }
    final Point viewSize = new Point(mWidth, mHeight);
    if (autoFocusSupported && mAutoFocusEnabled) {
        Utils.setAutoFocusMode(parameters, mAutoFocusMode);
        final Rect frameRect = mScannerView.getFrameRect();
        if (frameRect != null) {
            Utils.configureDefaultFocusArea(parameters, frameRect, previewSize, viewSize,
                    imageWidth, imageHeight, orientation);
        }
    }
    final List<String> flashModes = parameters.getSupportedFlashModes();
    final boolean flashSupported =
            flashModes != null && flashModes.contains(Parameters.FLASH_MODE_TORCH);
    if (!flashSupported) {
        mFlashEnabled = false;
    }
    final int zoom = mZoom;
    if (zoom != 0) {
        Utils.setZoom(parameters, zoom);
    }
    Utils.configureFpsRange(parameters);
    Utils.configureSceneMode(parameters);
    Utils.configureVideoStabilization(parameters);
    camera.setParameters(parameters);
    camera.setDisplayOrientation(orientation);
    synchronized (mInitializeLock) {
        final Decoder decoder =
                new Decoder(mDecoderStateListener, mFormats, mDecodeCallback);
        mDecoderWrapper =
                new DecoderWrapper(camera, cameraInfo, decoder, imageSize, previewSize,
                        viewSize, orientation, autoFocusSupported, flashSupported);
        decoder.start();
        mInitialization = false;
        mInitialized = true;
    }
    mMainThreadHandler.post(new FinishInitializationTask(previewSize));
}
 
Example 7
Source File: AndroidCameraOutput.java    From sensorhub with Mozilla Public License 2.0 4 votes vote down vote up
@Override
public void init() throws SensorException
{
    try
    {
        // TODO get closest values from camera characteristics
        imgWidth = 800;
        imgHeight = 600;
        frameRate = 1;
        
        // open camera and set parameters
        camera = Camera.open(cameraId);
        Parameters camParams = camera.getParameters();
        camParams.setPreviewSize(imgWidth, imgHeight);
        camParams.setPreviewFormat(ImageFormat.NV21);
        camera.setParameters(camParams);
        
        // setup buffers and callback
        imgArea = new Rect(0, 0, imgWidth, imgHeight);
        int bufSize = imgWidth*imgHeight*ImageFormat.getBitsPerPixel(ImageFormat.NV21)/8;
        imgBuf1 = new byte[bufSize];
        yuvImg1 = new YuvImage(imgBuf1, ImageFormat.NV21, imgWidth, imgHeight, null);
        imgBuf2 = new byte[bufSize];
        yuvImg2 = new YuvImage(imgBuf2, ImageFormat.NV21, imgWidth, imgHeight, null);
        camera.addCallbackBuffer(imgBuf1);
        camera.addCallbackBuffer(imgBuf2);
        camera.setPreviewCallbackWithBuffer(this);
        camera.setDisplayOrientation(90);
                    
        // create SWE Common data structure            
        SWEFactory fac = new SWEFactory();            
        dataStruct = fac.newDataRecord(2);
        dataStruct.setName(getName());
        
        Time time = fac.newTime();
        time.getUom().setHref(Time.ISO_TIME_UNIT);
        time.setDefinition(SWEConstants.DEF_SAMPLING_TIME);
        time.setReferenceFrame(TIME_REF);
        dataStruct.addComponent("time", time);
                
        DataArray img = fac.newDataArray(imgHeight);
        img.setDefinition("http://sensorml.com/ont/swe/property/VideoFrame");
        dataStruct.addComponent("videoFrame", img);
        
        DataArray imgRow = fac.newDataArray(imgWidth);
        img.addComponent("row", imgRow);
        
        DataRecord imgPixel = fac.newDataRecord(3);
        imgPixel.addComponent("red", fac.newCount(DataType.BYTE));
        imgPixel.addComponent("green", fac.newCount(DataType.BYTE));
        imgPixel.addComponent("blue", fac.newCount(DataType.BYTE));
        imgRow.addComponent("pixel", imgPixel);
        
        // SWE Common encoding
        dataEncoding = fac.newBinaryEncoding();
        dataEncoding.setByteEncoding(ByteEncoding.RAW);
        dataEncoding.setByteOrder(ByteOrder.BIG_ENDIAN);
        BinaryComponent timeEnc = fac.newBinaryComponent();
        timeEnc.setRef("/" + time.getName());
        timeEnc.setCdmDataType(DataType.DOUBLE);
        dataEncoding.addMemberAsComponent(timeEnc);
        //BinaryBlock compressedBlock = fac.newBinaryBlock();
        //compressedBlock.setRef("/" + img.getName());
        //compressedBlock.setCompression("H264");
        BinaryBlock compressedBlock = fac.newBinaryBlock();
        compressedBlock.setRef("/" + img.getName());
        compressedBlock.setCompression("JPEG");
        dataEncoding.addMemberAsBlock(compressedBlock);
        
        // resolve encoding so compressed blocks can be properly generated
        SWEHelper.assignBinaryEncoding(dataStruct, dataEncoding);
        
        // start streaming video
        if (previewSurfaceHolder != null)
            camera.setPreviewDisplay(previewSurfaceHolder);
        camera.startPreview();
    }
    catch (Exception e)
    {
        throw new SensorException("Cannot access camera " + cameraId, e);
    }
}