Camera2 APP显示画面

本文介绍了一个简单的Android相机应用实现过程,包括创建预览界面、获取摄像头管理器对象、打开摄像头设备、配置摄像头会话及捕获请求等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建TextView

2.得到CameraMananger对象打开camera

3. 得到CameraDevice对象,注册callback

4.拿住CameraCaptureSession

5.发送CaptureRequest

public class MainActivity extends Activity {

	private TextureView mTextureView;
	private CameraCaptureSession mCameraCaptureSession;
	private CameraDevice mCameraDevice;
	private Surface mPreviewSurface;
	//private String mCameraId;
	//private Handler mHandler;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	//预览用的surface
	mTextureView = (TextureView) this.findViewById(R.id.textureView1);
	mTextureView.setSurfaceTextureListener(new SurfaceTextureListener() {
		@Override
		public void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) {
			// TODO 自动生成的方法存根
			mPreviewSurface = new Surface(arg0);
			CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
			try {
				manager.openCamera("1", new CameraDevice.StateCallback() {
					
					@Override
					public void onOpened(CameraDevice arg0) {
						// TODO 自动生成的方法存根s
						mCameraDevice = arg0;
						try {
							mCameraDevice.createCaptureSession(Arrays.asList(mPreviewSurface), 
								new CameraCaptureSession.StateCallback() {
								@Override
								public void onConfigured(CameraCaptureSession arg0) {
									// TODO 自动生成的方法存根
									mCameraCaptureSession = arg0;
									try {
										CaptureRequest.Builder builder;
										builder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
										builder.addTarget(mPreviewSurface);
										mCameraCaptureSession.setRepeatingRequest(builder.build(), null, null);
									} catch (CameraAccessException e1) {
										// TODO 自动生成的 catch 块
										e1.printStackTrace();
									}								
								}
								@Override
								public void onConfigureFailed(CameraCaptureSession arg0) {
									// TODO 自动生成的方法存根
								}
							}, null);
						} catch (CameraAccessException e) {
							// TODO 自动生成的 catch 块
							e.printStackTrace();
						}
						
					}
					
					@Override
					public void onError(CameraDevice arg0, int arg1) {
						// TODO 自动生成的方法存根
						
					}
					
					@Override
					public void onDisconnected(CameraDevice arg0) {
						// TODO 自动生成的方法存根
						
					}
				}, null);
			} catch (CameraAccessException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		@Override
		public boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) {
			// TODO 自动生成的方法存根
			return false;
		}
		@Override
		public void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1, int arg2) {
			// TODO 自动生成的方法存根
			
		}
		@Override
		public void onSurfaceTextureUpdated(SurfaceTexture arg0) {
			// TODO 自动生成的方法存根
			
		}
		
	});

	}	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值