请用Android编写程序:使用Intent启动手机照相机拍照,然后将照片显示在界面中。
时间: 2024-02-09 22:09:51 浏览: 158
好的,以下是使用Intent启动手机照相机拍照并将照片显示在界面中的示例代码:
1. 创建一个按钮和一个ImageView,当用户点击按钮时,我们将启动相机应用来拍摄照片,并将照片显示在ImageView中。
```xml
<Button
android:id="@+id/btn_take_photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Take Photo" />
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
```
2. 在按钮点击事件中,我们使用Intent来启动相机应用,并等待相机应用返回结果。在成功拍照后,我们将照片显示在ImageView中。
```java
private static final int REQUEST_IMAGE_CAPTURE = 1;
private Button btnTakePhoto;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取界面元素
btnTakePhoto = findViewById(R.id.btn_take_photo);
imageView = findViewById(R.id.image_view);
// 设置按钮点击事件
btnTakePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 创建启动相机的 Intent
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 确保设备有相机应用可用
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// 启动相机应用并等待结果
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 获取拍照后的照片
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
// 将照片显示在 ImageView 中
imageView.setImageBitmap(imageBitmap);
}
}
```
在上面的代码中,我们创建了一个按钮和一个ImageView,并在按钮点击事件中启动相机应用来拍摄照片。在 onActivityResult() 方法中,我们获取相机应用返回的照片并将其显示在ImageView中。需要注意的是,我们需要在AndroidManifest.xml文件中添加相机和读/写文件的权限。
阅读全文