怎么将拍的照片存储在本地,然后利用Bundle传送到另外一个activity的UI界面上,具体代码
时间: 2024-01-22 12:18:02 浏览: 74
将拍的照片存储在本地,可以通过以下代码实现:
```java
private File createImageFile() throws IOException {
// 创建一个以时间戳为名称的文件
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File imageFile = File.createTempFile(
imageFileName, // 文件名称前缀
".jpg", // 文件类型
storageDir // 存储文件的目录
);
// 将文件路径保存在全局变量中
mCurrentPhotoPath = imageFile.getAbsolutePath();
return imageFile;
}
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
ex.printStackTrace();
}
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) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 将照片路径保存在 Bundle 中
Bundle extras = new Bundle();
extras.putString("photo_path", mCurrentPhotoPath);
// 启动新的 Activity 并传递 Bundle
Intent intent = new Intent(this, NewActivity.class);
intent.putExtras(extras);
startActivity(intent);
}
}
```
上述代码中,我们通过 `createImageFile()` 方法创建了一个以时间戳为名称的文件,并将其保存在外部存储的 Pictures 目录下。然后,在 `dispatchTakePictureIntent()` 方法中,我们调用系统相机应用拍照并将照片保存在上述文件中。在拍照完成后,我们将照片路径保存在 Bundle 中,并通过 `startActivity()` 方法启动新的 Activity 并传递 Bundle。
在新的 Activity 中,我们可以通过以下代码获取 Bundle 中保存的照片路径,并将其显示在 UI 界面上:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
ImageView imageView = findViewById(R.id.imageView);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String photoPath = extras.getString("photo_path");
Bitmap bitmap = BitmapFactory.decodeFile(photoPath);
imageView.setImageBitmap(bitmap);
}
}
```
上述代码中,我们首先在 `onCreate()` 方法中获取 Bundle,并通过 `getString()` 方法获取保存的照片路径。然后,我们通过 `BitmapFactory.decodeFile()` 方法将照片转换为 Bitmap 对象,并将其显示在 ImageView 中。
阅读全文