android 调用相机 显示图片

一、调用相机:

@Override
			public void onClick(View v) {
				
				Intent intent = new Intent();
				intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
				
				MainActivity.this.startActivityForResult(intent, 300);
				
			}});


二、在onActivityResult中接收照片

protected void onActivityResult(int requestCode, int resultCode, Intent data) { ....

}else if(requestCode == 300){
			if(resultCode == RESULT_OK){
				
				Bitmap bmap = data.getParcelableExtra("data");
				
				ImageView imageview = (ImageView)this.findViewById(R.id.imageview);
				imageview.setImageBitmap(bmap);
				
				// 图像保存到文件中
				FileOutputStream foutput = null;
				try {
					foutput = new FileOutputStream(this.imageFile);
					bmap.compress(Bitmap.CompressFormat.PNG, 100, foutput);
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				}finally{
					if(null != foutput){
						try {
							foutput.close();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
				}
				
				this.mUri = Uri.fromFile(this.imageFile);
			}
		}


效果图:



  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Android中,调用相机通常涉及到使用系统的Camera API或更现代的CameraX库。以下是基本步骤: 1. **权限检查**:确保在AndroidManifest.xml文件中添加了使用相机的权限 `<uses-permission android:name="android.permission.CAMERA" />`。 2. **环境检测**:在运行时检查设备是否支持相机,是否有可用的相机。 3. **选择相机接口**: - Camera API(适用于API级别19及以上):`Camera` 类和 `CameraPreview` 用于打开相机显示预览。 - CameraX(推荐,从API级别21开始):`CameraX` 提供了更简洁的API,如 `CameraSelector`, `CameraCaptureSession` 和 `ImageCapture`。 4. **创建相机实例**: - Camera API: 实例化 `Camera` 对象,并监听其预览。 - CameraX: 使用 `CameraSelector` 创建 `CameraProvider` 并选择相机。 5. **设置预览**: - Camera API: 设置 `SurfaceView` 为预览输出。 - CameraX: 创建 `SurfaceControl` 对象并将预览输出到该视图。 6. **拍照或录像**: - Camera API: 调用 `takePicture()` 或 `startPreview()`。 - CameraX: 使用 `CaptureRequest` 和 `CaptureSession` 进行拍摄或录像。 7. **处理结果**:对于拍照,需要在回调中处理图片数据;录像则需要处理视频流。 8. **关闭相机**: - Camera API: 释放 `Camera` 对象。 - CameraX: 使用 `cameraProvider.unbindAll()` 关闭连接。 ```java // 示例代码片段(使用CameraX) CameraX.cameraSelector(CameraSelector.DEFAULT_BACK_CAMERA) .bindToLifecycle(lifecycleOwner) .addOnSuccessListener { camera –> val preview = Preview.Builder().build() val captureSession = camera.createCaptureSession(arrayOf(preview.surface)) preview.setOnPreviewOutputUpdateListener { _, _ -> captureSession.configure(CaptureRequest.Builder().build()) } captureSession.startCapture(CaptureRequest.Builder().build(), null) } .addOnFailureListener { e –> // 处理错误 } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值