Search in sources :

Example 86 with Camera

use of android.hardware.Camera in project barcodescanner by dm77.

the class ZXingScannerView method onPreviewFrame.

@Override
public void onPreviewFrame(byte[] data, Camera camera) {
    if (mResultHandler == null) {
        return;
    }
    try {
        Camera.Parameters parameters = camera.getParameters();
        Camera.Size size = parameters.getPreviewSize();
        int width = size.width;
        int height = size.height;
        if (DisplayUtils.getScreenOrientation(getContext()) == Configuration.ORIENTATION_PORTRAIT) {
            byte[] rotatedData = new byte[data.length];
            for (int y = 0; y < height; y++) {
                for (int x = 0; x < width; x++) rotatedData[x * height + height - y - 1] = data[x + y * width];
            }
            int tmp = width;
            width = height;
            height = tmp;
            data = rotatedData;
        }
        Result rawResult = null;
        PlanarYUVLuminanceSource source = buildLuminanceSource(data, width, height);
        if (source != null) {
            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
            try {
                rawResult = mMultiFormatReader.decodeWithState(bitmap);
            } catch (ReaderException re) {
            // continue
            } catch (NullPointerException npe) {
            // This is terrible
            } catch (ArrayIndexOutOfBoundsException aoe) {
            } finally {
                mMultiFormatReader.reset();
            }
        }
        final Result finalRawResult = rawResult;
        if (finalRawResult != null) {
            Handler handler = new Handler(Looper.getMainLooper());
            handler.post(new Runnable() {

                @Override
                public void run() {
                    // Stopping the preview can take a little long.
                    // So we want to set result handler to null to discard subsequent calls to
                    // onPreviewFrame.
                    ResultHandler tmpResultHandler = mResultHandler;
                    mResultHandler = null;
                    stopCameraPreview();
                    if (tmpResultHandler != null) {
                        tmpResultHandler.handleResult(finalRawResult);
                    }
                }
            });
        } else {
            camera.setOneShotPreviewCallback(this);
        }
    } catch (RuntimeException e) {
        // TODO: Terrible hack. It is possible that this method is invoked after camera is released.
        Log.e(TAG, e.toString(), e);
    }
}
Also used : Handler(android.os.Handler) HybridBinarizer(com.google.zxing.common.HybridBinarizer) Result(com.google.zxing.Result) ReaderException(com.google.zxing.ReaderException) PlanarYUVLuminanceSource(com.google.zxing.PlanarYUVLuminanceSource) Camera(android.hardware.Camera) BinaryBitmap(com.google.zxing.BinaryBitmap)

Example 87 with Camera

use of android.hardware.Camera in project libstreaming by fyhertz.

the class VideoStream method measureFramerate.

/**
	 * Computes the average frame rate at which the preview callback is called.
	 * We will then use this average frame rate with the MediaCodec.  
	 * Blocks the thread in which this function is called.
	 */
private void measureFramerate() {
    final Semaphore lock = new Semaphore(0);
    final Camera.PreviewCallback callback = new Camera.PreviewCallback() {

        int i = 0, t = 0;

        long now, oldnow, count = 0;

        @Override
        public void onPreviewFrame(byte[] data, Camera camera) {
            i++;
            now = System.nanoTime() / 1000;
            if (i > 3) {
                t += now - oldnow;
                count++;
            }
            if (i > 20) {
                mQuality.framerate = (int) (1000000 / (t / count) + 1);
                lock.release();
            }
            oldnow = now;
        }
    };
    mCamera.setPreviewCallback(callback);
    try {
        lock.tryAcquire(2, TimeUnit.SECONDS);
        Log.d(TAG, "Actual framerate: " + mQuality.framerate);
        if (mSettings != null) {
            Editor editor = mSettings.edit();
            editor.putInt(PREF_PREFIX + "fps" + mRequestedQuality.framerate + "," + mCameraImageFormat + "," + mRequestedQuality.resX + mRequestedQuality.resY, mQuality.framerate);
            editor.commit();
        }
    } catch (InterruptedException e) {
    }
    mCamera.setPreviewCallback(null);
}
Also used : Semaphore(java.util.concurrent.Semaphore) Camera(android.hardware.Camera) Editor(android.content.SharedPreferences.Editor)

Example 88 with Camera

use of android.hardware.Camera in project zxing-android-embedded by journeyapps.

the class CameraManager method startPreview.

/**
     * Asks the camera hardware to begin drawing preview frames to the screen.
     *
     * Must be called from camera thread.
     */
public void startPreview() {
    Camera theCamera = camera;
    if (theCamera != null && !previewing) {
        theCamera.startPreview();
        previewing = true;
        autoFocusManager = new AutoFocusManager(camera, settings);
        ambientLightManager = new AmbientLightManager(context, this, settings);
        ambientLightManager.start();
    }
}
Also used : AmbientLightManager(com.google.zxing.client.android.AmbientLightManager) Camera(android.hardware.Camera)

Example 89 with Camera

use of android.hardware.Camera in project zxing-android-embedded by journeyapps.

the class CameraManager method setParameters.

private void setParameters() {
    try {
        this.rotationDegrees = calculateDisplayRotation();
        setCameraDisplayOrientation(rotationDegrees);
    } catch (Exception e) {
        Log.w(TAG, "Failed to set rotation.");
    }
    try {
        setDesiredParameters(false);
    } catch (Exception e) {
        // Failed, use safe mode
        try {
            setDesiredParameters(true);
        } catch (Exception e2) {
            // Well, darn. Give up
            Log.w(TAG, "Camera rejected even safe-mode parameters! No configuration");
        }
    }
    Camera.Size realPreviewSize = camera.getParameters().getPreviewSize();
    if (realPreviewSize == null) {
        previewSize = requestedPreviewSize;
    } else {
        previewSize = new Size(realPreviewSize.width, realPreviewSize.height);
    }
    cameraPreviewCallback.setResolution(previewSize);
}
Also used : Size(com.journeyapps.barcodescanner.Size) Camera(android.hardware.Camera) IOException(java.io.IOException)

Example 90 with Camera

use of android.hardware.Camera in project zxing-lib by kennydude.

the class CameraConfigurationManager method setDesiredCameraParameters.

void setDesiredCameraParameters(Camera camera, boolean safeMode) {
    Camera.Parameters parameters = camera.getParameters();
    if (parameters == null) {
        Log.w(TAG, "Device error: no camera parameters are available. Proceeding without configuration.");
        return;
    }
    Log.i(TAG, "Initial camera parameters: " + parameters.flatten());
    if (safeMode) {
        Log.w(TAG, "In camera config safe mode -- most settings will not be honored");
    }
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    initializeTorch(parameters, prefs, safeMode);
    String focusMode = null;
    if (prefs.getBoolean(PreferencesActivity.KEY_AUTO_FOCUS, true)) {
        if (safeMode || prefs.getBoolean(PreferencesActivity.KEY_DISABLE_CONTINUOUS_FOCUS, false)) {
            focusMode = findSettableValue(parameters.getSupportedFocusModes(), Camera.Parameters.FOCUS_MODE_AUTO);
        } else {
            focusMode = findSettableValue(parameters.getSupportedFocusModes(), // Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE in 4.0+
            "continuous-picture", // Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO in 4.0+
            "continuous-video", Camera.Parameters.FOCUS_MODE_AUTO);
        }
    }
    // Maybe selected auto-focus but not available, so fall through here:
    if (!safeMode && focusMode == null) {
        focusMode = findSettableValue(parameters.getSupportedFocusModes(), Camera.Parameters.FOCUS_MODE_MACRO, // Camera.Parameters.FOCUS_MODE_EDOF in 2.2+
        "edof");
    }
    if (focusMode != null) {
        parameters.setFocusMode(focusMode);
    }
    parameters.setPreviewSize(cameraResolution.x, cameraResolution.y);
    camera.setParameters(parameters);
}
Also used : SharedPreferences(android.content.SharedPreferences) Camera(android.hardware.Camera)

Aggregations

Camera (android.hardware.Camera)154 Point (android.graphics.Point)28 CameraCharacteristics (android.hardware.camera2.CameraCharacteristics)25 Size (android.util.Size)25 IOException (java.io.IOException)19 Parameters (android.hardware.Camera.Parameters)18 Rect (android.graphics.Rect)17 ArrayList (java.util.ArrayList)17 Display (android.view.Display)16 WindowManager (android.view.WindowManager)16 CaptureRequest (android.hardware.camera2.CaptureRequest)15 SharedPreferences (android.content.SharedPreferences)10 Paint (android.graphics.Paint)10 CameraMetadataNative (android.hardware.camera2.impl.CameraMetadataNative)10 ZoomData (android.hardware.camera2.legacy.ParameterUtils.ZoomData)10 Bitmap (android.graphics.Bitmap)8 MediaRecorder (android.media.MediaRecorder)7 OpenCamera (com.google.zxing.client.android.camera.open.OpenCamera)6 SuppressLint (android.annotation.SuppressLint)5 Area (android.hardware.Camera.Area)5