如何使用Camera2获取Android摄像头图像

如何使用Camera2获取Android摄像头图像,android,android-camera2,Android,Android Camera2,安卓:有什么问题吗?我正试图用CAMERA2从我的Android相机中获取一张照片,但有些东西不起作用。 我只需要从我的相机中获取一个视频流,并将其显示在屏幕上。代码main活动: public class MainActivity extends AppCompatActivity { private CameraManager cameraManager = null; private TextureView textureView = null; @Override protected v

安卓:有什么问题吗?我正试图用CAMERA2从我的Android相机中获取一张照片,但有些东西不起作用。 我只需要从我的相机中获取一个视频流,并将其显示在屏幕上。代码main活动:

public class MainActivity extends AppCompatActivity {
private CameraManager cameraManager = null;
private TextureView textureView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textureView = (TextureView) findViewById(R.id.textureView);

    cameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);

}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onResume() {
    super.onResume();
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
        return;
    }
    try {
        cameraManager.openCamera(cameraManager.getCameraIdList()[0], new CameraDevice.StateCallback() {
            @Override
            public void onOpened(@NonNull CameraDevice camera) {
                CaptureRequest.Builder builder = null;
                try {
                    builder = camera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
                } catch (CameraAccessException e) {
                    e.printStackTrace();
                }
                if(builder != null)
                    if(textureView != null)
                    builder.addTarget(new Surface(textureView.getSurfaceTexture()));
                else onClosed(camera);
            }

            @Override
            public void onDisconnected(@NonNull CameraDevice camera) {
            }

            @Override
            public void onError(@NonNull CameraDevice camera, int error) {

            }
        }, new Handler(getApplicationContext().getMainLooper()));
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

请提供帮助

请查看camera2的示例视频捕获应用程序:


当前代码从不使用TextureView创建相机捕获会话,也从不向该会话提交重复的捕获请求。查看示例,看看它是如何设置相机的。

有些东西不工作
具体是什么?您在logcat中有任何错误日志吗?你申请运行时许可了吗?是的,我在宣言上签了名使用相机。在Logcat中,SurveCeTexture不应为空
登录到声明
不是
运行时权限
。你请求过运行时权限吗?你想用Android 6请求什么?我不想请求任何东西,那就是你应该请求危险的权限。