在这个解决方案中,我们首先在AndroidManifest.xml文件中为活动设置了android:configChanges属性,以便在屏幕方向改变时保持活动的状态。然后,在布局文件中添加了一个SurfaceView用于相机预览,并设置了一个唯一的标识符。
在活动中,我们获取了SurfaceView的引用,并在onResume方法中打开相机,并在onPause方法中关闭相机。我们使用CameraManager类来获取相机设备的引用,并使用CameraDevice类来打开和关闭相机。
然后,我们创建了一个用于相机预览的CaptureRequest.Builder对象,并将SurfaceView的Surface作为目标添加到该对象中。我们使用CameraCaptureSession类来创建相机预览会话,并将Surface作为会话的输出目标。最后,我们在会话中设置重复请求,以更新相机预览。
在屏幕方向改变时,我们需要关闭当前的相机会话和相机设备,并重新打开相机来适应新的屏幕方向。因此,我们在活动的onConfigurationChanged方法中实现了这些操作。
通过这个解决方案,我们能够正确地处理屏幕方向,并使相机预览能够自适应布局。