`
04023129
  • 浏览: 161583 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Android开发片段–调用系统相机拍照

阅读更多

初始化相机

 

private void initCamera() {
		setContentView(R.layout.main);
		btnTake = (Button) this.findViewById(R.id.take);

		btnTake.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				camera.autoFocus(new AutoFocusCallback());
			}
		});
		Display display = getWindowManager().getDefaultDisplay();
		surfaceView = (SurfaceView) this.findViewById(R.id.mSurfaceView1);
		surfaceView.getHolder().setFixedSize(display.getWidth(),
				display.getHeight()); // 设置分辨率
		/* 下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前 */
		surfaceView.getHolder()
				.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
		surfaceView.getHolder().addCallback(new SurfaceCallback());
	}

 

回调函数类

 private final class SurfaceCallback implements SurfaceHolder.Callback {

		@Override
		public void surfaceChanged(SurfaceHolder holder, int format, int width,
				int height) {

		}

		@Override
		public void surfaceCreated(SurfaceHolder holder) {
			try {
				camera = Camera.open();
				Camera.Parameters parameters = camera.getParameters();
				// parameters.setPreviewSize(1024, 768);//设置预览照片的大小
				// parameters.setPreviewFrameRate(3);//每秒3帧
				parameters.setPictureFormat(PixelFormat.JPEG);// 设置照片的输出格式
				parameters.set("jpeg-quality", quality);// 照片质量
				parameters.setPictureSize(photoWidth, photoHeight);// 设置照片的大小
				parameters.set("orientation", "landscape");
				// parameters.set("orientation", "portrait");
				// parameters.set("rientation", "90");
				// camera.setDisplayOrientation(90);
				// parameters.set("rotation", "180");
				// parameters.set("orientation", "landscape");
				parameters.setRotation(180);

				camera.setParameters(parameters);
				camera.setPreviewDisplay(surfaceView.getHolder());// 通过SurfaceView显示取景画面
				camera.startPreview();// 开始预览
				preview = true;
			} catch (IOException e) {
				Log.e(TAG, e.toString());
			}

		}

		@Override
		public void surfaceDestroyed(SurfaceHolder holder) {
			if (camera != null) {
				if (preview)
					camera.stopPreview();
				camera.release();
			}
		}

	}

 自动对焦

private final class AutoFocusCallback implements Camera.AutoFocusCallback {
		@Override
		public void onAutoFocus(boolean success, Camera camera) {
			camera.takePicture(null, null, new TakePictureCallback());
		}

	}

 拍照保存

private final class TakePictureCallback implements PictureCallback {
		@Override
		public void onPictureTaken(byte[] data, Camera camera) {
			try {

				Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
						data.length);
				File file = new File(temPath);
				FileOutputStream outStream = new FileOutputStream(file);

				// Bitmap 旋转
				Matrix vMatrix = new Matrix();
				vMatrix.setRotate(270);

				Bitmap vB2 = Bitmap.createBitmap(bitmap, 0, 0, bitmap
						.getWidth() // 宽度
						, bitmap.getHeight() // 高度
						, vMatrix, true);
				vB2.compress(CompressFormat.JPEG, 100, outStream);
				outStream.close();
				camera.stopPreview();
				// savePhoto();
				setReview();
			} catch (Exception e) {
				Log.e(TAG, e.toString());
			}
		}
	}
 
分享到:
评论

相关推荐

    Android 调用系统相机拍照

    在Android应用开发中,调用系统相机拍照是一项常见的功能,用户可以使用手机摄像头捕捉图片,然后将图片数据返回到应用程序中。本篇文章将详细介绍如何在Android应用中实现这一功能,特别是静默拍照的方法。 首先,...

    androidの调用系统相机拍照

    在Android应用开发中,调用系统相机拍照是一个常见的功能需求,尤其对于社交、影像记录类的应用来说至关重要。本文将详细讲解如何在Android中实现这一功能,以帮助开发者更高效地进行应用开发。 首先,我们需要在...

    Android调用相机拍照,view截屏,无预览、静默拍照

    总结来说,Android调用相机拍照、view截屏和无预览静默拍照是Android应用开发中的高级功能,它们涉及到Android的多媒体处理、系统权限和设备硬件交互等多个方面。理解并熟练掌握这些技术,能帮助开发者构建更加丰富...

    Android 读取手机姿态并写入文本文件同时调用系统相机

    以上代码片段展示了如何在Android应用中获取手机姿态数据并写入文本文件,同时实现调用系统相机进行拍照并保存图片的功能。这涉及到Android的传感器API、文件操作以及相机Intent的使用,是Android开发中常见且实用的...

    Android如何调用系统相机拍照

    在Android应用开发中,调用系统相机拍照是常见的功能,用户可以通过这个功能快速获取图片。下面我们将详细讲解如何在Android中实现这一功能。 首先,我们需要创建一个方法来启动相机。在提供的代码片段中,`...

    Android自定义照相机的实例

    在Android平台上,开发自定义照相机应用是一项常见的任务,它允许开发者根据特定需求定制相机功能和用户界面。本文将深入探讨如何实现这样一个自定义照相机实例,包括界面设计、权限管理、相机操作以及图片处理等...

    Android 照相机 Camera

    自Android OS 2.0版本开始,Google提供了官方支持的照相API,这为开发者提供了开发自定义照相机应用的可能性。到了Android OS 2.3版本,进一步增强了对多摄像头的支持,允许应用程序选择并配置不同的摄像头。这对于...

    Android仿美图秀秀和IOS系统的相机胶卷.rar

    - Android中可以通过调用系统相机应用来拍摄新照片,使用`Intent.ACTION_IMAGE_CAPTURE`启动相机。 - 为了提供更好的用户体验,也可以自定义相机界面,利用`Camera` API 或 `CameraX` 进行深度集成,控制拍照参数...

    Android静默拍照

    从Android 2.3(API Level 9)开始,系统提供了Camera类,允许开发者直接控制相机硬件。而在Android 4.2(API Level 17)之后,引入了Camera2 API,这是一个更高级、更灵活的接口,能够提供更多的相机控制选项。 1....

    Android编程实现调用相册、相机及拍照后直接裁剪的方法

    在Android应用开发中,调用系统相册、相机以及拍照后进行裁剪是常见的功能需求,用于用户选择或拍摄头像等。本篇文章将详细讲解如何在Android项目中实现这一系列操作。 首先,我们需要在布局文件中设置好相关的UI...

    Android Camera 拍照 例子程序

    总结,"TakePicture"示例程序是一个基础的Android相机拍照应用,它展示了如何使用Android原生Camera API来实现简单的拍照功能。通过深入理解这个例子,开发者可以以此为基础,构建更复杂的相机应用,满足更多元化的...

    AndroidProject安卓项目实现拍照上传的代码片段.zip

    在Android平台上,实现拍照上传功能是一项常见的需求,尤其在开发社交、电商或任何需要用户上传图片的应用中。这个"AndroidProject安卓项目实现拍照上传的代码片段.zip"文件提供了一个具体的实现示例,可以帮助...

    Android自定义照相机Camera出现黑屏的解决方法

    在Android应用开发中,自定义相机功能是一项常见的需求。然而,开发者在实现这一功能时可能会遇到各种问题,其中最令人头疼的就是相机预览界面出现黑屏的现象。本篇文章将深入探讨这个问题,分析其原因,并提供相应...

    Android前后摄像头同时预览

    在Android平台上,开发一款应用允许用户同时预览前后摄像头是一项技术挑战。这个"Android前后摄像头同时预览"项目,通过提供的DoubleCameraDemo源代码,展示了如何实现在特定设备(如红米3S和乐视2)上同时开启并...

    android相机控制包括摄像录像

    在Android平台上,相机控制是应用程序开发中的一个重要领域,它涵盖了拍照、录像以及一系列与图像捕捉相关的功能。本文将深入探讨如何在Android应用中实现相机控制,包括摄像和录像功能。 一、Android相机API概述 ...

    Android自定义照相机详解

    在Android应用开发中,相机功能是非常常见且重要的。本文将详细介绍如何自定义Android应用程序中的照相机功能。首先,我们来看一下启动相机的两种主要方法: 1. 直接启动系统相机: 这是最简单的方式,通过Intent来...

    Android 简单的照相机程序的实例代码

    在Android平台上,开发一款简单的照相机程序涉及到对Android系统相机API的使用,主要涉及以下几个关键知识点: 1. **SurfaceView**: `SurfaceView`是Android中用于处理多媒体数据(如视频和图像)的一种视图组件。...

    android 拍照和聚焦音

    在Android平台上,拍照和聚焦音是用户在使用相机功能时经常能够听到的声音。正常情况下,当用户触发相机进行拍摄时,设备会播放一个抓拍声音,而当用户在触摸屏幕进行对焦时,设备也会播放一个聚焦声音。然而,在...

    Android-拍照、打开本地相册.rar

    首先,**拍照**功能通常通过调用Android系统的相机应用来完成。这需要创建一个Intent,并设置其类型为图像捕获。以下是关键代码片段: ```java Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_...

    android相机滤镜

    在Android平台上,为相机添加滤镜效果是一项常见的需求,它能极大地提升用户的拍照体验和应用的趣味性。本文将深入探讨如何使用Java代码实现在Android上实现图片滤镜功能。 首先,我们需要理解滤镜的基本原理。滤镜...

Global site tag (gtag.js) - Google Analytics