Android 开发随手笔记之使用摄像头拍照
在Android开发中,使用摄像头拍照是一项常见的功能,通常有两主要方法:调用系统相机(System Camera)和自定义相机界面。本篇笔记将重点讨论如何调用系统相机进行拍照。 为了能够访问和保存拍摄的照片,我们需要在AndroidManifest.xml文件中添加必要的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> ``` 第一步,创建照片存储路径。通常,我们会选择外部存储目录作为照片的保存位置,并生成一个唯一的文件名: ```java File filePath = new File(Environment.getExternalStorageDirectory(), "myCamera"); if (!filePath.exists()) { filePath.mkdirs(); } String fileName = new File(filePath, System.currentTimeMillis() + ".jpg"); try { if (!fileName.exists()) { fileName.createNewFile(); } } catch (Exception e) { e.printStackTrace(); } ``` 第二步,启动系统相机应用。通过创建一个Intent,设置ACTION_IMAGE_CAPTURE动作,并将拍摄结果的输出Uri传递给相机应用: ```java Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(fileName)); startActivityForResult(intent, Activity.DEFAULT_KEYS_DIALER); ``` 这里的`startActivityForResult()`方法用于启动相机应用,并指定一个请求码以便后续处理返回结果。 第三步,处理相机应用返回的结果。在`onActivityResult()`方法中,我们可以接收到相机应用返回的数据。如果请求码与我们之前设置的一致,说明拍照操作已完成,此时我们可以将拍摄的照片加载到ImageView中: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Activity.DEFAULT_KEYS_DIALER) { // MainActivity接收Camera返回的消息,然后将已经写入的图片显示在ImageView内 imageView.setImageURI(Uri.fromFile(fileName)); } } ``` 完整的MainActivity代码可能如下: ```java import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { private File fileName = null; private Button button; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); imageView = (ImageView)findViewById(R.id.imageView); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { takePicture(); } }); } private void takePicture() { // ... 创建文件和启动相机的代码 ... } } ``` 以上就是Android中调用系统相机拍照的基本流程。这种方法简单快捷,但无法对相机功能进行定制,如调整参数或添加特殊效果。如果需要更高级的控制,可以考虑实现自定义相机界面,但这需要对Camera API有深入的理解。
- 粉丝: 6
- 资源: 899
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 面部、耳廓损伤损伤程度分级表.docx
- 农资使用情况调查问卷.docx
- 燃气管道施工资质和特种设备安装改造维修委托函.docx
- 食物有毒的鉴定方法.docx
- 市政道路工程联合质量抽检记录表.docx
- 市政道路工程联合质量抽检项目、判定标准、频率或点数.docx
- 视力听力残疾标准.docx
- 视器视力损伤程度分级表.docx
- 收回扣检查报告.docx
- 输液室管理制度、治疗配药室、注射室、处置室感染管理制度、查对制度.docx
- 听器听力损伤程度分级表.docx
- 新生儿评分apgar标准五项、五项体征的打分标准.docx
- 医疗废弃物环境风险评价依据、环境风险分析.docx
- 预防溺水宣传口号.docx
- 招标代理方案评分表.docx
- 职业暴露后的处理流程.docx