1) Camera API1 我们可以通过setDisplayOrientation(int degress)来设置camera预览的方向。 mCamera.setDisplayOrientation(Surface.ROTATION_180); 拍照方向,则是和setRotation有关。 mParameters.setRotation(rotation); 2) Camera API2 //设置拍照方向 captureBuilder.set(CaptureRequest.JPEG_ORIENTATION,rotation); Came...
总得来讲,就是 Camera APP 通过 CameraManager 获取 CameraDevice,使用 CameraDevice 创建 CameraCaptureSession,CameraCaptureSession 发送 CaptureRequest, CameraDevices 收到请求后返回对应数据到对应的 Surface 中,Camera2 中预览/拍照/录像数据统一由 Surface 来接收,预览数据一般都是 SurfaceView, 拍照数据则在 ImageR...
这个方法的第一个参数是CaptureRequest,第二和第三个参数仍然是回调和handler,这里我们不需要监听回调,都设成null就好。 拍照 我们可以创建ImageReader来接收画面: Size[]photoSizes=cc.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(ImageReader.class);mImageReader=getImageReader(getMostSuitabl...
"相机已启动");//初始化拍照用的 ImageReader 和 SurfaceinitReaderAndSurface();cameraDevice=camera;try{//初始化预览 SurfaceSurfaceTexturesurfaceTexture=previewView.getSurfaceTexture();if(surfaceTexture==null){return;}surfaceTexture.setDefaultBufferSize(photoSize...
理解了上面API的功能和作用之后,接下来即可使用Camera v2 API来控制摄像头拍照了。控制拍照的步骤大致如下。 调用CameraManager的openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)方法打开指定摄像头。该方法的第一个参数代表要打开的摄像头ID;第二个参数用于监听摄像头的状态;第三个...
但有一点需要强调的是,切换到「微距模式」后,相机的对焦点其实也不会改变。用户需要重新对焦才能够拍照,不然有些时候会出现「虚掉」的状况,哪怕你是同一个对焦点。 此外,相机的对焦方式也会有一些变化,配合变焦会让你觉得有点「拉进最近对焦距离」的错觉。事实上,Camera 2并没有改变镜头的最近对焦距离,它只不过...
关联Surface,这里是预览和拍照的两个 Surface 创建CaptureRequest,指定要请求的目标 Surface 开始请求 Request 当你跑起来上述代码,看到的预览界面方向对了,但是是变形的,那是因为没有处理大小问题,下面会说。示例图如下: 拍照 在预览示例里我们给 Session 关联了 ImageReader 的 Surface,拍照时我们可以向 Session 发起...
使用步骤2得到的Camera.Parameters对象,对拍照参数进行设置 调用Camera.setPreviewDispaly(SurfaceHolder holder),指定使用哪个SurfaceView来显示预览图片 调用Camera.startPreview()方法开始预览取景 调用Camera.takePicture()方法进行拍照 拍照结束后,调用Camera.stopPreview()结束取景预览,之后再replease()方法释放资源 ...
是指在使用摄像头进行拍摄或视频录制时,需要调整预览界面显示的方向。 在移动开发中,调整Camera预览方向可以通过以下方式实现: 1. 使用Camera.Parameters类:通过获取Camer...