Android开发:调用系统相机与自定义摄像头界面拍照

0 下载量 73 浏览量 更新于2024-09-01 收藏 61KB PDF 举报
"这篇Android开发随手笔记探讨了如何在Android应用中使用摄像头进行拍照,包括两种常见方法:调用系统相机应用和自定义相机界面。文章着重介绍了调用系统相机的步骤,涉及到权限设置、图片存储路径创建、Intent启动相机以及结果显示。" 在Android平台上,开发人员通常有两种方式来实现拍照功能:一是利用系统提供的Camera应用程序,二是构建自定义的相机界面。本文主要讲解第一种方法。在开始之前,必须确保在AndroidManifest.xml文件中添加了必要的权限,即访问外部存储和使用相机的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> ``` 调用系统相机的过程如下: 1. 创建图片存储路径:首先,你需要为拍摄的照片指定一个存储位置。这通常是在外部存储目录下创建一个名为"myCamera"的文件夹,并在此文件夹中生成一个带有当前时间戳的JPEG格式文件名。 ```java File filePath = new File(Environment.getExternalStorageDirectory(), "myCamera"); if (!filePath.exists()) { filePath.mkdirs(); } File fileName = new File(filePath, System.currentTimeMillis() + ".jpg"); try { if (!fileName.exists()) { fileName.createNewFile(); } } catch (Exception e) { e.printStackTrace(); } ``` 2. 启动Camera Activity:接下来,通过创建一个Intent,指定其动作为`MediaStore.ACTION_IMAGE_CAPTURE`,这会启动系统相机应用。同时,使用`putExtra()`方法将拍摄后照片的输出路径传递给相机,以便照片保存在我们之前创建的文件中。 ```java Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(fileName)); ``` 3. 启动并处理结果:使用`startActivityForResult()`启动相机Intent,传入一个请求码,这样当用户完成拍照并返回时,可以捕获到结果。 ```java startActivityForResult(intent, Activity.RESULT_OK); ``` 当用户完成拍照后,系统会回调`onActivityResult()`方法,你可以在这个方法中处理拍摄的照片,例如将其显示在你的应用中。 ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == Activity.RESULT_OK && resultCode == RESULT_OK) { // 显示拍摄的图片 // ... } } ``` 以上就是使用Android系统相机拍照的基本流程。虽然这种方法简单快捷,但无法自定义相机界面和高级功能,如滤镜、实时预览效果等。如果需要更多控制和自定义,可能需要使用Camera API或者现代的Camera2 API来自行实现相机界面。