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币余额
- 我的收藏
- 我的下载
- 下载帮助