本文实例讲述了Android编程调用Camera和相册功能。分享给大家供大家参考,具体如下: xml: <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android android:layout_width=fill_parent android:layout_height=fill_parent android:orientation=vertical> <Button android:id=@+id/button_cameraButton android: 在Android开发中,调用相机(Camera)和相册(Album)是常见的功能,用于让用户拍摄照片或选择已有的图片。下面将详细讲解如何在Android应用中实现这两个功能。 我们从布局文件开始。在提供的XML代码中,可以看到一个`LinearLayout`包含两个按钮和一个`ImageView`。按钮分别用于触发拍照和选择相册图片的操作: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/button_cameraButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="拍照" /> <Button android:id="@+id/button_photoButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="相册" /> <ImageView android:id="@+id/imageview_preview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:src="@drawable/ic_launcher" /> </LinearLayout> ``` 接下来,我们需要在Activity中初始化这些视图并设置监听器来响应用户的操作。以下是一个简单的`CameraShowActivity`的实现: ```java public class CameraShowActivity extends Activity { private ImageView mImageView; private Button mButtonCamera; private Button mButtonPhoto; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera_show); mImageView = findViewById(R.id.imageview_preview); mButtonCamera = findViewById(R.id.button_cameraButton); mButtonPhoto = findViewById(R.id.button_photoButton); mButtonCamera.setOnClickListener(new OnClickListener() { // 打开Camera @Override public void onClick(View v) { Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "camera.jpg"))); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); startActivityForResult(intent, 10); } }); mButtonPhoto.setOnClickListener(new OnClickListener() { // 打开相册 @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, 20); } }); } // 处理拍照和选图结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 10 && resultCode == RESULT_OK) { // 拍照后处理图片 // 通常会在这里处理拍照返回的图片,如裁剪、显示到ImageView等 } else if (requestCode == 20 && resultCode == RESULT_OK) { // 从相册选取图片后处理 Uri selectedImage = data.getData(); mImageView.setImageURI(selectedImage); } } } ``` 当用户点击“拍照”按钮时,我们创建一个`Intent`用于启动相机应用,通过`EXTRA_OUTPUT`额外参数指定保存照片的路径。`EXTRA_VIDEO_QUALITY`用于设置视频质量,0代表低质量。`startActivityForResult`启动相机应用,并在拍照完成后回调`onActivityResult`方法。 而当用户点击“相册”按钮时,我们创建一个`Intent`用于启动相册应用,使用`ACTION_PICK`动作和`MediaStore.Images.Media.EXTERNAL_CONTENT_URI`数据源,让用户选择一张图片。同样,选择图片后也会回调`onActivityResult`,此时可以通过`data.getData()`获取选择的图片的`Uri`。 请注意,从Android 6.0(API级别23)开始,运行时权限管理要求应用在运行时请求存储权限,以便能够访问外部存储。因此,在实际项目中,你需要确保在运行时已经获得了`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 总结来说,调用Android相机和相册功能主要涉及以下几个步骤: 1. 创建布局,包括用于触发操作的按钮和显示图片的`ImageView`。 2. 在Activity中初始化布局元素,并为按钮设置监听器。 3. 当点击拍照按钮时,启动相机应用并指定保存照片的路径。 4. 当点击相册按钮时,启动相册应用,让用户选择图片。 5. 在`onActivityResult`中处理拍照和选图的结果,通常包括加载图片到`ImageView`。 通过以上步骤,你的应用就可以实现基本的相机和相册功能了。不过,实际应用中可能还需要进行更多优化,比如图片的缩放、裁剪、旋转等处理,以及兼容不同设备和Android版本的适配。
- 粉丝: 7
- 资源: 963
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0