安网站建设公司,济宁住房和城乡建设局网站首页,电子商务网站运营 需要确立,wordpress拼图流程 一、获取CameraManager实例二、获取可用的相机列表三、选择一个相机并打开它四、创建一个CaptureRequest.Builder对象五、设置CaptureRequest.Builder对象的参数六、创建一个CaptureSession对象七、开始预览 代码示例 一、获取CameraManager实例 CameraManager manager (… 流程 一、获取CameraManager实例二、获取可用的相机列表三、选择一个相机并打开它四、创建一个CaptureRequest.Builder对象五、设置CaptureRequest.Builder对象的参数六、创建一个CaptureSession对象七、开始预览 代码示例 一、获取CameraManager实例 CameraManager manager (CameraManager) getSystemService(Context.CAMERA_SERVICE);二、获取可用的相机列表 String[] cameraIds manager.getCameraIdList();三、选择一个相机并打开它 String cameraId cameraIds[0];manager.openCamera(cameraId, new CameraDevice.StateCallback() {Overridepublic void onOpened(CameraDevice camera) {// 相机已经打开可以进行后续操作}Overridepublic void onDisconnected(CameraDevice camera) {// 相机断开连接需要释放资源camera.close();}Overridepublic void onError(CameraDevice camera, int error) {// 相机打开出错需要释放资源camera.close();}}, null);四、创建一个CaptureRequest.Builder对象 CaptureRequest.Builder builder camera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);五、设置CaptureRequest.Builder对象的参数 builder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);六、创建一个CaptureSession对象 camera.createCaptureSession(Arrays.asList(surface), new CameraCaptureSession.StateCallback() {Overridepublic void onConfigured(CameraCaptureSession session) {// CaptureSession已经创建可以进行后续操作}Overridepublic void onConfigureFailed(CameraCaptureSession session) {// CaptureSession创建失败需要释放资源camera.close();}}, null);七、开始预览 session.setRepeatingRequest(builder.build(), null, null);代码示例
xml布局
?xml version1.0 encodingutf-8?
RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityTextureViewandroid:idid/texture_viewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent //RelativeLayout处理
public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener{private String[] cameraIds;private String cameraId;private CameraManager cameraManager;//从系统服务中获取相机管理器private TextureView textureView;private CameraDevice mCameraDevice;private CameraCaptureSession cameraCaptureSession;private CaptureRequest.Builder captureRequestBuilder null;private static final int ACTION_REQUEST_PERMISSIONS 0x001;/*** 所需的所有权限信息*/private static final String[] NEEDED_PERMISSIONS new String[]{Manifest.permission.CAMERA,//相机};SuppressLint({MissingPermission, MissingInflatedId})Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//权限检查if (!checkPermissions(NEEDED_PERMISSIONS)) {ActivityCompat.requestPermissions(this, NEEDED_PERMISSIONS,ACTION_REQUEST_PERMISSIONS);}textureViewfindViewById(R.id.texture_view);textureView.setSurfaceTextureListener(this);//设置布局}/*** 权限检查* param neededPermissions 需要的权限* return 是否全部被允许*/protected boolean checkPermissions(String[] neededPermissions) {if (neededPermissions null || neededPermissions.length 0) {return true;}boolean allGranted true;for (String neededPermission : neededPermissions) {allGranted ContextCompat.checkSelfPermission(this, neededPermission) PackageManager.PERMISSION_GRANTED;}return allGranted;}Overridepublic void onSurfaceTextureAvailable(NonNull SurfaceTexture surfaceTexture, int i, int i1) {//布局初始化完成,打开相机openCamera2();}SuppressLint(MissingPermission)private void openCamera2(){//一、获取cameraManagercameraManager (CameraManager) getSystemService(Context.CAMERA_SERVICE);try {cameraIds cameraManager.getCameraIdList();//获取摄像机id的集合cameraId cameraIds[0];cameraManager.openCamera(cameraId,callback,null);} catch (Exception e) {throw new RuntimeException(e);}}CameraDevice.StateCallback callbacknew CameraDevice.StateCallback() {Overridepublic void onOpened(NonNull CameraDevice cameraDevice) {mCameraDevice cameraDevice;createCameraPreviewSession();}Overridepublic void onDisconnected(NonNull CameraDevice cameraDevice) {}Overridepublic void onError(NonNull CameraDevice cameraDevice, int i) {}};private void createCameraPreviewSession() {try {SurfaceTexture surfaceTexture textureView.getSurfaceTexture();
// surfaceTexture.setDefaultBufferSize(textureView.getWidth(), textureView.getHeight());surfaceTexture.setDefaultBufferSize(640, 480);
// surfaceTexture.setDefaultBufferSize(480,640 );Surface previewSurface new Surface(surfaceTexture);captureRequestBuilder mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);captureRequestBuilder.addTarget(previewSurface);mCameraDevice.createCaptureSession(Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() {Overridepublic void onConfigured(CameraCaptureSession session) {cameraCaptureSession session;try {cameraCaptureSession.setRepeatingRequest(captureRequestBuilder.build(), null, null);} catch (CameraAccessException e) {e.printStackTrace();}}Overridepublic void onConfigureFailed(CameraCaptureSession session) {Toast.makeText(MainActivity.this, Failed to create camera capture session, Toast.LENGTH_SHORT).show();}}, null);} catch (CameraAccessException e) {e.printStackTrace();}}Overridepublic void onRequestPermissionsResult(int requestCode, NonNull String[] permissions, NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);switch (requestCode) {case ACTION_REQUEST_PERMISSIONS: {// 如果请求被取消结果数组将为空if (grantResults.length 0 grantResults[0] PackageManager.PERMISSION_GRANTED) {// 授权成功执行相关操作} else {// 授权失败禁用相关功能或显示提示信息}return;}// 处理其他权限请求}}Overridepublic void onSurfaceTextureSizeChanged(NonNull SurfaceTexture surfaceTexture, int i, int i1) {}Overridepublic boolean onSurfaceTextureDestroyed(NonNull SurfaceTexture surfaceTexture) {return false;}Overridepublic void onSurfaceTextureUpdated(NonNull SurfaceTexture surfaceTexture) {}Overrideprotected void onResume() {super.onResume();}}