如何在调用相机之前创建一个文档用于保存拍的照片,完整代码
时间: 2023-12-10 09:03:34 浏览: 70
在使用相机前创建文档保存图片的步骤如下:
1. 添加文件读取和写入权限到 AndroidManifest.xml 文件中:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
2. 创建一个 File 对象来表示图片文件:
```java
File imageFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "photo.jpg");
```
在这里,我们使用了 `Environment.getExternalStoragePublicDirectory()` 方法来获取设备上的公共图片目录,并在其中创建一个名为 "photo.jpg" 的文件。
3. 创建一个 Intent 对象来启动相机并拍照:
```java
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE);
```
在这里,我们使用了 `MediaStore.ACTION_IMAGE_CAPTURE` 来启动相机应用,并将图片保存到我们刚才创建的文件中。
4. 在 onActivityResult() 方法中处理拍照后的结果并显示图片:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 图片保存成功,显示图片
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageBitmap(BitmapFactory.decodeFile(imageFile.getAbsolutePath()));
}
}
```
完整代码如下:
```java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_IMAGE_CAPTURE = 1;
private File imageFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建保存图片的文件
imageFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "photo.jpg");
// 启动相机应用拍照
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 图片保存成功,显示图片
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageBitmap(BitmapFactory.decodeFile(imageFile.getAbsolutePath()));
}
}
}
```
阅读全文