怎么将相机拍出的照片传送到编辑页面,编辑页面照片和文本框,点击save按钮后保存到Room数据库,点击cancel按钮,返回相机拍照界面,并且删除该照片
时间: 2023-10-03 11:02:18 浏览: 87
拍照上传到数据库
这个问题需要分几个步骤来完成。
1. 相机拍照界面
首先需要在界面上添加一个相机组件,让用户可以使用相机拍照。当用户拍完照片后,需要将照片保存到本地文件系统中。可以使用以下代码来实现:
```java
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File imageFile = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
currentPhotoPath = imageFile.getAbsolutePath();
return imageFile;
}
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Ensure that there's a camera activity to handle the intent
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
ex.printStackTrace();
}
// Continue only if the File was successfully created
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(this,
"com.example.android.fileprovider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// Image captured and saved to fileUri specified in the Intent
// Now you can load the image and display it on the screen
Bitmap bitmap = BitmapFactory.decodeFile(currentPhotoPath);
imageView.setImageBitmap(bitmap);
}
}
```
2. 编辑页面
在编辑页面上,需要添加一个文本框和一个保存按钮和取消按钮。用户可以在文本框中输入一些文字,然后点击保存按钮将照片和文字保存到数据库中。
3. 保存到Room数据库
在保存按钮的点击事件中,可以将照片和文本框中的文字保存到Room数据库中。首先需要创建一个实体类来存储照片和文字:
```java
@Entity(tableName = "photo")
public class Photo {
@PrimaryKey(autoGenerate = true)
public int id;
@ColumnInfo(name = "photo_path")
public String photoPath;
@ColumnInfo(name = "text")
public String text;
}
```
然后在DAO中添加一个插入数据的方法:
```java
@Dao
public interface PhotoDao {
@Insert
void insert(Photo photo);
}
```
最后在保存按钮的点击事件中,可以使用以下代码将照片和文字保存到数据库中:
```java
Photo photo = new Photo();
photo.photoPath = currentPhotoPath;
photo.text = editText.getText().toString();
photoDao.insert(photo);
```
4. 删除照片
在取消按钮的点击事件中,可以使用以下代码删除刚才拍摄的照片:
```java
File file = new File(currentPhotoPath);
file.delete();
```
这样就完成了将相机拍出的照片传送到编辑页面,编辑页面照片和文本框,点击save按钮后保存到Room数据库,点击cancel按钮,返回相机拍照界面,并且删除该照片的整个流程。
阅读全文