Android系统相机拍照显示优化实例:实时与存储后

1 下载量 140 浏览量 更新于2024-09-04 收藏 86KB PDF 举报
本文将详细介绍如何在Android应用中实现打开系统相机并拍摄照片的两种不同显示方法。首先,我们将关注activity_main.xml中的布局设置,这是一个关键部分,它定义了用户界面元素,包括两个按钮和一个用于显示照片的ImageView。 activity_main.xml布局如下: ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/btnOpenCamera" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="拍照立即显示" /> <Button android:id="@+id/btnSavePhoto" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="60dp" android:text="拍照存储后显示" /> <ImageView android:id="@+id/ivShowPicture" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:layout_marginTop="130dp" /> </RelativeLayout> ``` 在这个布局中,我们有两个按钮,分别对应不同的拍照行为:`btnOpenCamera`用于即时显示拍照结果,适合于小图片场景,而`btnSavePhoto`则允许用户保存照片后再显示,适合于高质量图片的处理。`ivShowPicture`是ImageView,用于显示拍摄的照片。 在`MainActivity.java`文件中,我们将实现这两个按钮的点击事件,调用系统的相机API来拍照。对于即时显示,可能通过`ACTION_IMAGE_CAPTURE_SECURE`或`ACTION_IMAGE_CAPTURE`意图启动相机,然后利用`setResult()`方法传递拍摄的照片数据到当前Activity。这通常会导致系统自动关闭相机并回到原Activity,这时可以使用`onActivityResult()`方法接收返回的照片数据,并在ImageView中显示。 另一种方式是,当用户点击`btnSavePhoto`时,先调用相机拍摄照片,然后将照片保存到设备的某个位置(如私有文件夹),接着调用`startActivityForResult()`与特定的Activity配合,让用户选择保存路径或者预览图片,最后在回调的`onActivityResult()`中读取并显示已保存的照片。 这两种方法的区别在于即时显示可能导致图像质量受限,因为系统可能需要对大尺寸图片进行压缩,而保存后再显示则提供了更好的控制和灵活性。开发者需要根据实际需求选择合适的显示策略。同时,别忘了遵循Android权限管理规则,确保在运行时获得了访问相机的权限。