JavaCamera2View включить fla sh opencv - PullRequest
0 голосов
/ 19 марта 2020

В настоящее время я использую JavaCameraView для включения fla sh. К сожалению, API для camera1 устарели, и поэтому я вынужден переключиться на JavaCamaera2View. Проблема в том, что я не могу включить fla sh, потому что у меня нет доступа к камере, как в JavaCameraView.
Есть ли у вас какие-либо решения?

Теперь это мой код

public class CustomCamera extends JavaCameraView implements PictureCallback {
    private String mPictureFileName;
    public CustomCamera(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public List<String> getEffectList() {
        return mCamera.getParameters().getSupportedFlashModes();
    }
    public boolean isEffectSupported() {
        return (mCamera.getParameters().getFlashMode() != null);
    }
    public String getEffect() {
        return mCamera.getParameters().getFlashMode();
    }
    public void setEffect(String effect) {
        mCamera.getParameters();
        Camera.Parameters params = mCamera.getParameters();
        params.setFlashMode(effect);
        mCamera.setParameters(params);
    }
    public List<Size> getResolutionList() {
        return mCamera.getParameters().getSupportedPreviewSizes();
    }
    public void setResolution(int w, int h) {
        disconnectCamera();
        mMaxHeight = h;
        mMaxWidth = w;
        connectCamera(getWidth(), getHeight());
    }

    public Size getResolution() {
        return mCamera.getParameters().getPreviewSize();
    }

    public void takePicture(final String fileName) {
        this.mPictureFileName = fileName;
        // Postview and jpeg are sent in the same buffers if the queue is not empty when performing a capture.
        // Clear up buffers to avoid mCamera.takePicture to be stuck because of a memory issue
        mCamera.setPreviewCallback(null);

        // PictureCallback is implemented by the current class
        mCamera.takePicture(null, null, this);
    }

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        // The camera preview was automatically stopped. Start it again.
        mCamera.startPreview();
        mCamera.setPreviewCallback(this);

        // Write the image in a file (in jpeg format)
        try {
            FileOutputStream fos = new FileOutputStream(mPictureFileName);
            fos.write(data);
            fos.close();
        } catch (java.io.IOException e) {
            Log.e("PictureDemo", "Exception in photoCallback", e);
        }

    }

    public void cameraRelease() {
        if(mCamera != null){
            mCamera.release();
        }
    }
}

1 Ответ

0 голосов
/ 19 марта 2020

просто используйте CameraX: https://developer.android.com/training/camerax

Например, вы можете использовать это: https://github.com/JDroidCoder/Camera2 Эта библиотека имеет функцию fla sh здесь: https://github.com/JDroidCoder/Camera2/blob/master/camera2/src/main/java/jdroidcoder/ua/camera2/CameraActivity.kt

...