标签: android-camera2

Android Camera2:自动对焦和曝光

在我的Android相机应用程序中,我正在使用Camera2 API.应用程序没有显示相机的预览,我已经以某种方式实现了它,当按下UI上的按钮时,它会拍摄图像.但问题在于自动对焦和自动曝光.简单地说,我需要将相机始终集中在视图的中间.因此,在构建请求时,我添加了以下属性:

captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO);
captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
captureBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO);
captureBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START);
captureBuilder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CameraMetadata.CONTROL_AE_PRECAPTURE_TRIGGER_START);  
Run Code Online (Sandbox Code Playgroud)

但问题仍然是图像没有集中.

我有几个问题:

我是否需要在里面的方法中实现一些检查CameraCaptureSession.CaptureCallback

我也注意到,在onImageAvailable调用的时候ImageReader.OnImageAvailableListener,没有触发onCaptureProgressed方法CameraCaptureSession.CaptureCallback.

我在这里缺少什么?我是否需要实现一个线程来等待相机聚焦,这将在按下拍照按钮时开始.

请注意,此应用程序没有相机预览.

android android-camera2

1
推荐指数
1
解决办法
5529
查看次数

Difference between acquireNextImage Vs acquireLatestImage

I am working on Camera2 API to take pictures continuously and it's working fine, Here I am able to save the captured image using following code:

ImageReader.OnImageAvailableListener readerListener = new ImageReader.OnImageAvailableListener() {
                @Override
                public void onImageAvailable(ImageReader reader) {
                    Image image = null;
                    try {

//                        image = reader.acquireLatestImage();
                        image = reader.acquireNextImage();
                        ByteBuffer buffer = image.getPlanes()[0].getBuffer();
                        byte[] bytes = new byte[buffer.capacity()];
                        buffer.get(bytes);
                        save(bytes);
                    } catch (FileNotFoundException e) {
                        logFile.writeCrashLog(TAG + ": " + e.toString());
                        hideProgressDialog();
                    } catch (IOException e) {
                        logFile.writeCrashLog(TAG …
Run Code Online (Sandbox Code Playgroud)

android android-camera2 image-reader

1
推荐指数
1
解决办法
2302
查看次数

有意启动前置摄像头

我正在尝试直接使用Intent. 下面是我的代码——

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            intent.putExtra("android.intent.extras.CAMERA_FACING", android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT);

            intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1);
            intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true);
        }
Run Code Online (Sandbox Code Playgroud)

我的清单文件:--

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="some.package">
    <uses-permission android:name="android.permission.INTERNET" />
    <!--
         The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
         Google Maps Android API v2, but you must specify either coarse or fine
         location permissions for the 'MyLocation' functionality. 
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.front" android:required="false" /> …
Run Code Online (Sandbox Code Playgroud)

java android android-camera samsung-mobile android-camera2

1
推荐指数
1
解决办法
305
查看次数

Camera2 API 中的 CaptureRequest.SENSOR_FRAME_DURATION 的目的是什么以及如何使用?

使用 Camera2 API 在 Android 中设置手动控件时, CaptureRequest.SENSOR_FRAME_DURATION的用途是什么?

\n\n

我已经阅读了几次文档,但仍然无法\xe2\x80\x99理解其目的,以及相对于曝光时间和ISO设置什么值。

\n\n

我了解 CaptureRequest.SENSOR_EXPOSURE_TIME 指定传感器允许进入的光量;另外,CaptureRequest.SENSOR_SENSITIVITY 是传感器对光的灵敏度 (ISO),但不知道 SENSOR_FRAME_DURATION 及其与曝光时间和传感器灵敏度的关系。

\n\n

例如,如果我设置 1 秒或 30 秒的长曝光时间,那么我应该在 SENSOR_FRAME_DURATION 中设置什么值?它与其他传感器控制有何关系?

\n

android android-camera2

1
推荐指数
1
解决办法
2111
查看次数

TextureView、SurfaceView、Texture 和 Surface 的区别

我在看 Android 的 Camera2 API。在代码https://github.com/googlesamples/android-Camera2Basic/blob/master/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java#L210,他们所使用的类SurfaceViewTextureViewTexture并且Surface没有过多解释。在区分这 4 个类时,文档也没有很大帮助。

因此,我的问题(S):什么是SurfaceViewTextureViewTextureTexture?他们有什么区别?他们有什么区别?什么是用来做什么的?

每个非文档类的解释都会很棒。

提前致谢,

android android-camera2

1
推荐指数
1
解决办法
1457
查看次数

在androidcamerax(相机2)中禁用自动对焦

我正在进行扫描条形码的项目,所以我想禁用自动对焦以提高性能。我尝试了很多方法但根本不起作用。有人可以给我一些帮助吗?谢谢。

android barcode-scanner android-camera2 android-camerax

1
推荐指数
1
解决办法
1608
查看次数

Camera2 API - 为什么同一个表面需要指定两次?

查看Camera2 API,似乎需要指定一个表面两次。一旦在 期间完成createCaptureSession,就传入表面列表。稍后,我们再次为预览构建器的addTarget方法指定相同的表面。如果我们稍后要指定目标表面,为什么我们需要在调用过程中最初指定表面列表createCaptureSession?对于没有作用的addTarget表面到底有什么作用?createCaptureSession问候。

android android-camera2

0
推荐指数
1
解决办法
645
查看次数

使用 Camera2 API 设置相机变焦

我正在尝试使用新的 Camera2 API 访问相机设置并应用缩放。在旧的不推荐使用的 Camera API 中,代码如下:

Camera.Parameters parameters = mCamera.getParameters();
parameters.setZoom(zoomValue);
mCamera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)

考虑到 CameraManager 用于打开相机,我们如何实现相同的功能?

CameraManager.openCamera(cameraId, stateCallback, backgroundHandler);
Run Code Online (Sandbox Code Playgroud)

java android android-camera2

0
推荐指数
1
解决办法
3660
查看次数

在 CameraX 的预览中绘制圆来描述 TapToFocus

我正在尝试使用 CameraX Api 实现 TapToFocus 功能。我已经成功实现了它,但不知道如何在描述用户按下的位置的预览上画一个圆圈。

我想在预览中有一个像图像一样的圆圈

android android-camera android-camera2 android-camerax

0
推荐指数
1
解决办法
1336
查看次数